28. Le protocole ssh

28.1. Configurer et utiliser SSH

28.1.1. Premier pas

Génération d'une nouvelle paire de clefs.


cvanvinc@pinson ~ $ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/etudiants/cvanvinc/.ssh/id_dsa): 
Created directory '/etudiants/cvanvinc/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /etudiants/cvanvinc/.ssh/id_dsa.
Your public key has been saved in /etudiants/cvanvinc/.ssh/id_dsa.pub.
The key fingerprint is:
7c:a7:8e:ac:75:0a:5e:10:86:5a:74:65:29:b0:47:ca cvanvinc@pinson
The key's randomart image is:
+--[ DSA 1024]----+
|    o.o.o.       |
|   o *...        |
|    E +.         |
|   o o o         |
|  .   . S . .    |
|       . . o     |
|      . o o      |
|     . = =       |
|      o.+ .      |
+-----------------+

Vérification de .ssh


cvanvinc@pinson ~ $ ls .ssh/
id_dsa  id_dsa.pub

Cette commande a généré une clef DSA par défaut de 1024 bits. La clef privée est stockée dans /.ssh/id_dsa et la clef publique dans /.ssh/id_dsa.pub.

Pour générer une clef RSA2, utilisez l'option -t rsa et pour du RSA1 -t rsa1. On peut également entrer une passphrase (entre 10 et 30 caractères). La clef privée doit être ensuite mise en lecture seule pour le propriétaire et aucun accès pour les autres.

Pour modifier la passphrase sur une clef privée DSA, il faut utiliser la commande :


cvanvinc@pinson ~ $ ssh-keygen -p -f .ssh/id_dsa
Enter old passphrase: 
Key has comment '.ssh/id_dsa'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

La clef publique, doit être copiée sur le serveur distant dans .ssh/authorized_keys2. La clef privée reste sur le poste client. On peut y mettre plusieurs clefs publiques si l'on souhaite accéder au serveur avec plusieurs comptes d'accès différents.


cvanvinc@pinson ~ $ cat /etudiants/cvanvinc/.ssh/id_dsa.pub|ssh cvanvinc@192.168.22.213 "cat - >> .ssh/authorized_keys2"
The authenticity of host '192.168.22.213 (192.168.22.213)' can't be established.
RSA key fingerprint is 56:6b:3f:d4:1e:dc:6a:04:5b:61:06:f3:e5:81:0a:f9.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.22.213' (RSA) to the list of known hosts.
cvanvinc@192.168.22.213's password:

Le système demande un mot de passe pour pouvoir exporter la clef publique. une fois transférée on peut se connecter et réaliser des opérations comme scp sans avoir à saisir de mot de passe.


cvanvinc@pinson ~ $ ssh cvanvinc@192.168.22.213
Last login: Thu Feb 23 15:16:33 2012 from pinson.local
cvanvinc@pinson:~$ 

cvanvinc@pinson ~ $ ssh cvanvinc@192.168.22.213 ls
Bureau
cerealguy.svg
Documents
exos
II-adaptation évolutive de l'encéphale selon le milieu.pdf
Images
jeu_essai.txt
linux-3.2.2
linux-3.2.2.tar.bz2
mbox
Modèles
Musique
pt
Public
tags
Téléchargements
velocity.log
Vidéos
workspace
workspace.2

Dans mon cas, je n'ai eu qu'à saisir une seule fois la passphrase pour me connecter. La passphrase est automatiquement ajouté à l'agent.

Pour obtenir le finger print d'une clef, il faut utiliser la commande :


cvanvinc@pinson ~ $ ssh-keygen -l
Enter file in which the key is (/etudiants/cvanvinc/.ssh/id_rsa): .ssh/id_dsa
1024 7c:a7:8e:ac:75:0a:5e:10:86:5a:74:65:29:b0:47:ca .ssh/id_dsa.pub (DSA)

28.1.2. Utiliser un agent ssh

Un agent stocke en mémoire les clefs privées. Voici comment activer un agent :


cvanvinc@pinson ~ $ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Xvnyg32127/agent.32127; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32128; export SSH_AGENT_PID;
echo Agent pid 32128;

On va maintenant exporter les clés. Pour cela, on utilise la commande ssh-add :


cvanvinc@pinson ~ $ ssh-add
Enter passphrase for /etudiants/cvanvinc/.ssh/id_dsa: 
Identity added: /etudiants/cvanvinc/.ssh/id_dsa (/etudiants/cvanvinc/.ssh/id_dsa)

Pour supprimer une clef de l'agent, utilisez l'option -d :


cvanvinc@pinson ~ $ ssh-add -d .ssh/id_dsa
Identity removed: .ssh/id_dsa (.ssh/id_dsa.pub)

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


cvanvinc@pinson ~ $ ssh-add -l
1024 7c:a7:8e:ac:75:0a:5e:10:86:5a:74:65:29:b0:47:ca cvanvinc@pinson (DSA)
2048 6b:03:ba:8d:f3:06:1a:79:e8:92:b7:6a:f6:35:ca:c1 /etudiants/cvanvinc/.ssh/id_rsa (RSA)

cvanvinc@pinson ~ $ ssh-add -D
All identities removed.

28.2. Application

Essayer de réaliser , en les adaptant, les commandes données et vérifiez les points suivants :