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)
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.
Essayer de réaliser , en les adaptant, les commandes données et vérifiez les points suivants :
Vous arrivez à vous connecter à un serveur ssh distant sans entrer de mot de passe ni de passphrase;
Création du jeu de clefs (RSA) :
vanvincq@CP2L ~ $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vanvincq/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/vanvincq/.ssh/id_rsa.
Your public key has been saved in /home/vanvincq/.ssh/id_rsa.pub.
The key fingerprint is:
97:d5:4e:ac:82:ba:ce:1c:57:ae:81:6f:06:83:85:fe vanvincq@CP2L
The key's randomart image is:
+--[ RSA 2048]----+
| |
| o |
| . . + |
| . . . o + |
| . o S = . . |
| o oo + . |
| .+oo . |
| oE=oo |
| .=oo |
+-----------------+
Copie de la clef publique sur le serveur distant dans le répertoire .ssh/authorized_keys2 (dans mon cas je travaille en local) :
vanvincq@CP2L ~ $ cat ~/.ssh/id_rsa.pub | ssh vanvincq@192.168.1.10 "cat - >> .ssh/authorized_keys2"
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 2c:74:6f:16:59:12:24:d0:40:1c:03:c9:aa:ce:80:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
vanvincq@192.168.1.10's password:
Connection au serveur distant pour vérifier le bon fonctionnement :
vanvincq@CP2L ~ $ ssh vanvincq@192.168.1.10
Linux CP2L 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Feb 19 20:07:35 2012 from CP2L
vanvincq@CP2L ~ $ exit
logout
Connection to 192.168.1.10 closed.
Dans cette étape, le système m'a demandé la passphrase pour dévérouiller la clef. Une fois cela précisé, elle est automatiquement ajouté à l'agent ssh (dans mon cas).
vanvincq@CP2L ~ $ ssh-add -l
2048 97:d5:4e:ac:82:ba:ce:1c:57:ae:81:6f:06:83:85:fe vanvincq@CP2L (RSA)
Désormais il est possible de s'authentifier sans avoir à donner son mot de passe, ni sa passphrase.
vanvincq@CP2L ~ $ ssh vanvincq@192.168.1.10
Linux CP2L 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Feb 25 09:49:16 2012 from cp2l.local
Vous arrivez à passer une commande à un serveur distant sans ouvrir une session sur le serveur;
vanvincq@CP2L ~ $ ssh vanvincq@192.168.1.10 'ls -al'
total 324
drwxr-xr-x 48 vanvincq vanvincq 4096 25 févr. 09:55 .
drwxr-xr-x 4 root root 4096 19 févr. 10:06 ..
drwx------ 3 vanvincq vanvincq 4096 24 janv. 22:07 .adobe
-rw------- 1 vanvincq vanvincq 11652 25 févr. 09:54 .bash_history
-rw-r--r-- 1 vanvincq vanvincq 220 24 janv. 21:19 .bash_logout
-rw-r--r-- 1 vanvincq vanvincq 2552 5 févr. 09:10 .bashrc
-rw-r--r-- 1 vanvincq vanvincq 3184 5 févr. 09:08 .bashrc.old
drwxr-xr-x 2 vanvincq vanvincq 4096 22 févr. 16:16 Bureau
drwx------ 4 vanvincq vanvincq 4096 17 févr. 10:15 .cache
drwxr-xr-x 3 vanvincq vanvincq 4096 20 févr. 11:57 .codeblocks
drwxr-xr-x 14 vanvincq vanvincq 4096 18 févr. 13:40 .config
drwx------ 3 vanvincq vanvincq 4096 24 janv. 21:20 .dbus
-rw-r--r-- 1 vanvincq vanvincq 48 25 févr. 09:02 .dmrc
drwxr-xr-x 4 vanvincq vanvincq 4096 20 févr. 19:16 Documents
drwxr-xr-x 3 vanvincq vanvincq 4096 25 janv. 19:53 .emacs.d
-rw------- 1 vanvincq vanvincq 16 24 janv. 21:43 .esd_auth
drwx------ 7 vanvincq vanvincq 4096 14 févr. 19:51 .evolution
drwx------ 2 vanvincq vanvincq 4096 20 févr. 11:57 .filezilla
drwxr-xr-x 2 vanvincq vanvincq 4096 22 févr. 16:11 .fontconfig
drwx------ 4 vanvincq vanvincq 4096 25 févr. 09:02 .gconf
drwx------ 2 vanvincq vanvincq 4096 25 févr. 09:33 .gconfd
drwx------ 4 vanvincq vanvincq 4096 22 févr. 16:11 .gegl-0.0
drwxr-xr-x 22 vanvincq vanvincq 4096 22 févr. 16:14 .gimp-2.6
-rw-r--r-- 1 vanvincq vanvincq 60 28 janv. 11:43 .gitconfig
-rw-r----- 1 vanvincq vanvincq 0 25 févr. 09:04 .gksu.lock
drwx------ 11 vanvincq vanvincq 4096 12 févr. 17:23 .gnome2
drwx------ 2 vanvincq vanvincq 4096 24 janv. 21:42 .gnome2_private
drwx------ 2 vanvincq vanvincq 4096 24 janv. 21:20 .gnupg
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:39 .gstreamer-0.10
-rw-r--r-- 1 vanvincq vanvincq 173 25 févr. 09:02 .gtk-bookmarks
drwx------ 2 vanvincq vanvincq 4096 24 janv. 21:20 .gvfs
-rw------- 1 vanvincq vanvincq 17984 25 févr. 09:02 .ICEauthority
drwx------ 3 vanvincq vanvincq 4096 24 janv. 21:52 .icedove
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 22:06 .icons
drwxr-xr-x 2 vanvincq vanvincq 4096 25 janv. 08:46 Images
-rw------- 1 vanvincq vanvincq 73 22 févr. 12:20 .lesshst
drwxr-xr-x 2 vanvincq vanvincq 4096 20 févr. 10:57 .lftp
drwxr-xr-x 3 vanvincq vanvincq 4096 25 janv. 14:58 .libreoffice
drwx------ 3 vanvincq vanvincq 4096 24 janv. 22:00 .local
drwx------ 3 vanvincq vanvincq 4096 24 janv. 22:07 .macromedia
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:20 Modèles
drwx------ 4 vanvincq vanvincq 4096 24 janv. 21:42 .mozilla
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:20 Musique
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:20 .nautilus
drwx------ 3 vanvincq vanvincq 4096 24 janv. 22:07 .nv
-rw-r--r-- 1 vanvincq vanvincq 60 14 févr. 20:41 .packettracer
drwx------ 3 vanvincq vanvincq 4096 14 févr. 19:51 .pki
-rw-r--r-- 1 vanvincq vanvincq 675 24 janv. 21:19 .profile
drwxr-xr-x 6 vanvincq vanvincq 4096 13 févr. 21:28 pt
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:20 Public
drwx------ 2 vanvincq vanvincq 4096 20 févr. 19:17 .pulse
-rw------- 1 vanvincq vanvincq 256 18 févr. 13:40 .pulse-cookie
-rw------- 1 vanvincq vanvincq 16046 25 févr. 09:55 .recently-used.xbel
-rw------- 1 vanvincq vanvincq 11 17 févr. 09:58 .scapy_history
drwx------ 2 vanvincq vanvincq 4096 25 févr. 09:47 .ssh
drwxr-xr-x 4 vanvincq vanvincq 4096 17 févr. 10:15 Téléchargements
drwxr-xr-x 3 vanvincq vanvincq 4096 29 janv. 09:27 .texmf-var
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 22:06 .themes
drwx------ 4 vanvincq vanvincq 4096 24 janv. 22:06 .thumbnails
drwx------ 2 vanvincq vanvincq 4096 24 janv. 21:20 .update-notifier
drwxr-xr-x 2 vanvincq vanvincq 4096 24 janv. 21:20 Vidéos
-rw------- 1 vanvincq vanvincq 7173 22 févr. 11:58 .viminfo
-rw-r--r-- 1 vanvincq vanvincq 14884 12 févr. 11:20 .vimrc
drwxr-xr-x 2 vanvincq vanvincq 4096 22 févr. 12:22 .wireshark
drwx------ 4 vanvincq vanvincq 4096 20 févr. 11:38 .xchat2
-rw------- 1 vanvincq vanvincq 1845 25 févr. 09:11 .xsession-errors
-rw------- 1 vanvincq vanvincq 7063 22 févr. 16:52 .xsession-errors.old
drwxr-xr-x 6 vanvincq vanvincq 4096 17 févr. 09:26 .xxe5
Vous arrivez avec scp et sftp à "uploader" et "downloader" des fichiers sans saisir de mot de passe;
Récupération d'un fichier distant à partir de la commande sftp :
vanvincq@CP2L ~ $ sftp vanvincq@192.168.1.10:./fichier fichierTransfere
Connected to 192.168.1.10.
Fetching /home/vanvincq/./fichier to fichierTransfere
Envoi d'un fichier local toujours avec la commande sftp :
vanvincq@CP2L ~ $ sftp vanvincq@192.168.1.10
Connected to 192.168.1.10.
sftp> p
progress put pwd
sftp> put fichier fichierEnvoye
Uploading fichier to /home/vanvincq/fichierEnvoye
fichier 100% 0 0.0KB/s 00:00
sftp> ls
Bureau Documents Images Modèles Musique Public
Téléchargements Vidéos fichier fichierEnvoye pt
sftp> bye
Envoi d'un fichier local sur le serveur distant avec la commande scp :
vanvincq@CP2L ~ $ scp fichier vanvincq@192.168.1.10:./fichierTransfere
fichier 100% 0 0.0KB/s 00:00
Récupération d'un fichier distant sur la machine locale (avec scp) :
vanvincq@CP2L ~ $ scp vanvincq@192.168.1.10:./fichierDistant fichierTransfere
fichierDistant 100% 0 0.0KB/s 00:00
Vous arrivez via rsync à répliquer une arborescence locale sur un serveur distant dans un tunnel ssh et à faire l'inverse;
Synchronisation du dossier local vers le dossier distant de l'hôte distant (sending) :
vanvincq@CP2L ~ $ rsync -e ssh -valptz ./local/* vanvincq@192.168.1.10:./distant/
sending incremental file list
f1
f2
f3
f4
f5
sent 256 bytes received 107 bytes 726.00 bytes/sec
total size is 0 speedup is 0.00
Synchronisation du dossier distant du serveur distant vers le dossier local (fetching) :
vanvincq@CP2L ~ $ rsync -e ssh -valptz vanvincq@192.168.1.10:./distant/* ./local/
receiving incremental file list
f1
f2
f3
f4
f5
sent 106 bytes received 261 bytes 734.00 bytes/sec
total size is 0 speedup is 0.00