K

- Base de connaissances

Accueil > Projets Open Source > OpenSSH > SSH - OpenSSH

SSH - OpenSSH

lundi 5 novembre 2012, par webmestre

Lire aussi :

Qu’est ce que SSH

SSH (Secure Shell) est un protocole (méthode standard qui permet la communication entre des processus) permettant à un poste client (pc, mac, ...) de se connecter sur un poste serveur distant de façon sécurisée. En effet les données circulant entre les deux machines ainsi connectées sont chiffrées et ne circulent donc pas "en clair" sur le réseau (mot de passe par exemple).

Il est utilisé en remplacement sécurisé de TELNET. Il utilise la cryptographie à clé publique pour crypter les communications entre deux hôtes, ainsi que l’authentification des utilisateurs.

Cet outil peut être utilisé pour se connecter à un serveur distant ou copier des données entre deux hôtes, tout en empêchant des attaques de tiers (session hijacking et DNS spoofing). Ils assurent la compression de données sur vos connections et les communications X11 sécurisées.

Mais, comme dit précédemment, c’est aussi une suite de programmes permettant de se connecter à un système distant avec des échanges cryptés :

  • scp  : copie distante de fichiers
  • sftp  : transfert de fichiers
  • ssh  : client ssh

Vous pouvez aussi utiliser SSH depuis vos stations Windows. Il y a plusieurs implémentations de clients Windows librement disponibles :

  • PuTTy pour les connexions "émulation de terminal" (ssh),
  • Winscp pour les transferts de fichiers (sftp et scp).

Installation et configuration avancée de SSH

Dans un premier temps, il est nécessaire d’installer les paquets suivants, côté client :

sudo apt-get install openssh-client

côté serveur :

sudo apt-get install openssh-server

Une fois les paquets installés, le client ou le serveur sont directement utilisables.

Cependant, avant l’utilisation du serveur OpenSSH, il est vivement recommandé de modifier le fichier /etc/ssh/sshd_config de configuration du démon sshd pour augmenter / améliorer la sécurité (Voir cet article : Sécuriser un serveur OpenSSH)

Attention :
Veuillez à manipuler avec précaution les paramètres de configurations sur les serveurs distants OpenSSH, car dans le cas d’une mauvaise manipulation vous risquez de perdre définitivement l’accès aux serveurs.
Pour information, il est possible de manipuler les paramètres de configurations du serveur OpenSSH à chaud. C’est-à-dire qu’il est possible d’ouvrir une connexion SSH pour modifier les paramètres de configuration du démon serveur OpenSSH, et de tester avec une nouvelle connexion pour s’assurer que les paramètres sont correctes.

Accès à OpenSSH via une clef asymétrique DSA

Pour plus de détails, voir l’article Sécuriser un serveur OpenSSH.

Côté serveur :
Dans un premier temps, il est nécessaire de générer une paire de clefs privée et publique. Pour générer une clef DSA, nouvel algorithme « jugé » plus sûre que RSA mais surtout maintenu contrairement à RSA (Cela dit une clef RSA de 2048 bits reste suffisamment sûre...), il suffit de taper la ligne de commande suivante :

ssh-keygen -t dsa -b 1024

Et, renseigner une pass-phrase pour plus de sécurité.

Deux fichiers sont générés dans le répertoire /.ssh, l’un est la clef publique et l’autre la clef privée (fichier à ne pas divulguer) :

  • id_dsa
  • id_dsa.pub

On renommera id_rsa.pub en authorized_keys2 (ou authorized_keys fonction du système).

Sous WINDOWS, pour convertir la clef privée pour WinSCP ou Putty, il est nécessaire d’utiliser PuttyGen. Et, on rapatriera la clef privée qu’on convertira au format Putty comme décrit plus haut.

On renommera le fichier id_dsa.pub (clef publique) en authorized_keys :

mv ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys

Et, on copiera la clef privé id_dsa, dans l’environnement à partir duquel on se connectera à distance, dans le répertoire  /.ssh, via la commande suivante :

scp monuser@ip_mon_serveur_distant:~/.ssh/id_dsa ~/.ssh/id_dsa_mon_serveur_distant

Côté client :
Dans le répertoire  /.ssh, on créera un fichier de configuration config pour le client SSH qui indiquera quel fichier de clef privé il doit se servir pour se connecter à un serveur distant, exemple de fichier de configuration :

Host mon.domaine.com
        port 12345
        IdentityFile /home/userx/.ssh/id_dsa_serveur1
Host XXX.XXX.XXX.XXX
        port 54321
        IdentityFile /home/usery/.ssh/id_dsa_serveur2
Host 192.168.1.5
        port 22        
        IdentityFile /home/userz/.ssh/id_dsa_test

Divers 

Connexion à un serveur SSH via un autre serveur SSH :
Si vous avez deux serveurs SSH mais qu’il est nécessaire de se connecter au premier pour pouvoir accéder au deuxième, cette commande permet de réaliser les deux connexions :

ssh root@serveur1 -t ssh root@serveur2

ssh-agent et ssh-add : passphrase et mot de passe...
L’utilisation d’un agent évite d’avoir à taper la "passphrase" à chaque fois que l’on sollicite l’utilisation de la clé privée. Un agent stocke en mémoire les clés privées. Voici comment activer un agent :

ssh-agent

La commande met sur la sortie standard des variables d’environnement à déclarer et à exporter, pour se faire il suffit d’exécuter les commandes suivantes dans un script ou directement dans la session active :

SSH_AUTH_SOCK=/tmp/ssh-XXXB76f4/agent.2888; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2889; export SSH_AGENT_PID;
echo Agent pid 2889;

Remarque : Sous de nombreuses distributions le démon ssh-agent est lancé automatiquement au démarrage de la session.

Une fois l’agent lancé et les variables d’environnement initialisées, il est alors possible d’utiliser la commande suivante qui permet de mémoriser la "passphrase" une fois pour toute pendant la durée de la session :
ssh-add   # Qui mémorisera par défaut la "passphrase" de la clé ~/.ssh/id_dsa ou ~/.ssh_rsa

Ou, la commande suivante qui permet de mémoriser la "passphrase" d’une clef privée spécifique :

ssh-add /home/utilisateur/.ssh/id_dsa_serveur1

Si l’agent ssh n’est pas correctement paramétré (c’est-à-dire que les variables d’environnement ne sont pas correctement paramétrées ou déclarées), alors lors de l’exécution de la commande ssh-add, l’erreur suivante s’affichera au lieu de vous demander la "passphrase" :
Could not open a connection to your authentication agent.

Pour supprimer une clé (ici RSA) de l’agent, utilisez l’option "-d" :

ssh-add -d ~/.ssh/id_rsa

Utilisez l’option -D pour supprimer toutes les clés de l’agent.
Utilisez l’option -l pour savoir quelles clés sont chargées par l’agent.

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING