Académique Documents
Professionnel Documents
Culture Documents
Prcdent
Suivant
1.Introduction et mise-en-garde
1.1.Qu'est-ce que SSH ?
SSH signifie Secure SHell. C'est un protocole qui permet de faire des connexions scurises (i.e. chiffres) entre un serveur et un client SSH. Nous allons utiliser le programme OpenSSH, qui est la version libre du client et du serveur SSH.
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
Pour vrifier que les mots de passe des utilisateurs du systme sont vraiment complexes, le root peut les soumettre un cracker de mots de passe et voir combien de temps ils rsistent ! Les mots de passes des utilisateurs sont stocks dans le fichier /etc/shadow . Seul l'utilisateur root peut lire ce fichier. Pour tester la complexit des mots de passes, root peut donc installer le programme john et le lancer sur le fichier /etc/shadow :
Quand john a trouv un mot de passe, il l'affiche avec le login associ. Attention, john utilisera le processeur 100 % ! Il est donc conseill de lui donner une priorit faible (commande nice ou renice ) si la machine doit tre utilise pendant ce temps. Plus le nombre d'utilisateurs est grand, plus il faudra laisser tourner john longtemps pour que le test soit significatif.
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
4. Une fois la clef secrte change, le client et le serveur peuvent alors tablir un canal scuris grce la clef secrte commune (chiffrement symtrique). 5. Une fois que le canal scuris est en place, le client va pouvoir envoyer au serveur le login et le mot de passe de l'utilisateur pour vrification. La canal scuris reste en place jusqu' ce que l'utilisateur se dconnecte. La seule contrainte est de s'assurer que la clef publique prsente par le serveur est bien sa clef publique sinon le client risque de se connecter un faux serveur qui aurait pris l'adresse IP du vrai serveur (ou toute autre magouille). Une bonne mthode est par exemple de demander l'administrateur du serveur quelle est le fingerprint de la clef publique du serveur avant de s'y connecter pour la premire fois. Le fingerprint d'une clef publique est une chane de 32 caractres hexadcimaux peu prs unique pour chaque clef (un hachage) ; il s'obtient grce la commande ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub .
L'installation comporte une tape de gnration des clefs de chiffrement. Finalement, le serveur SSH se lance.
Signifie que le serveur SSH coute sur le port 22, qui est le port par dfaut de SSH. Vous pouvez le faire couter sur un autre port en changeant cette ligne. Vous pouvez aussi le faire couter sur plusieurs ports la fois en rajoutant des lignes similaires.
PermitRootLogin yes
Signifie que vous pouvez vous connecter en root par SSH. Vous pouvez changer et mettre no , ce qui signifie que pour vous connecter en root distance, vous devrez d'abord vous connecter par SSH en tant que simple utilisateur, puis utiliser la commande su pour devenir root. Sans cela, un pirate n'aurait qu' trouver le mot de passe du compte root, alors que l, il doit trouver votre login et votre mot de passe.
X11Forwarding yes
Signifie que vous allez pouvoir travailler en dport d'affichage par SSH. Ce sera expliqu plus tard, dans le Chapitre42. Si vous avez modifi le fichier de configuration du serveur, il faut lui dire de relire son fichier de configuration :
# /etc/init.d/ssh reload Reloading OpenBSD Secure Shell server's configuration.
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
Astuce Si vous utilisez le mme identifiant sur le client et sur le serveur, vous pouvez vous contenter de taper:
% ssh nom_DNS_du_serveur_SSH
Si c'est la premire connexion SSH depuis ce client vers ce serveur, il vous demande si le fingerprint de la clef publique prsente par le serveur est bien le bon. Pour tre sr que vous vous connectez au bon serveur, vous devez connatre de faon certaine le fingerprint de sa clef publique et la comparer celle qu'il vous affiche. Si les deux fingerprints sont identiques, rpondez yes , et la clef publique du serveur est alors rajoute au fichier ~/.ssh/known_hosts . Si vous vous tes dj connect depuis ce client vers le serveur, sa clef publique est dj dans le fichier ~/.ssh/known_hosts et il ne vous demande donc rien. Ensuite, entrez votre mot de passe... et vous verrez apparatre le prompt, comme si vous vous tiez connect en local sur la machine.
Les clefs gnres ont par dfaut une longueur de 1024 bits, ce qui est aujourd'hui considr comme suffisant pour une bonne protection. La clef prive est stocke dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la clef publique est stocke dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644. Lors de la cration, OpenSSH vous demande une pass phrase qui est un mot de passe pour protger la clef prive. Cette pass phrase sert chiffrer la clef prive. La pass phrase vous sera alors demande chaque utilisation de la clef prive, c'est--dire chaque fois que vous vous connecterez en utilisant cette mthode d'authentification. Un mcanisme appel ssh-agent permet de ne pas rentrer le mot de passe chaque fois, comme nous le verrons un peu plus loin dans ce chapitre. Note Vous pouvez tout moment changer la pass phrase qui protge votre clef prive avec la commande ssh-keygen -p .
Autoriser votre clef publique Pour cela, il suffit de copier votre clef publique dans le fichier ~/.ssh/authorized_keys de la machine
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
sur laquelle vous voulez vous connecter distance. La commande suivante permet de raliser cette opration via SSH :
% ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_DNS_du_serveur
Se connecter La commande est la mme que pour une authentification par mot de passe.
pour rcuprer le fichier test2.txt situ dans le rpertoire personnel de l'utilisateur toto de la machine ordi2.exemple.org et l'crire dans le rpertoire courant :
% scp toto@ordi2.exemple.org:test2.txt .
pour rcuprer tous les fichiers ayant l'extension .txt situs dans le rpertoire /usr/local de la machine ordi2.exemple.org et l'crire dans le sous-rpertoire test-scp du rpertoire courant :
% scp toto@ordi2.exemple.org:'/usr/local/*.txt' test-scp
pour transfrer l'intgralit du sous-rpertoire test-scp du rpertoire courant vers le sous rpertoire incoming du home de l'utilisateur toto de la machine ordi1.exemple.org :
% scp -r test-scp toto@ordi1.exemple.org:incoming
Utiliser lftp Je vous avais dj parl de l'utilisation de lftp comme client FTP dans la section Le ftp en console. Mais ce que je ne vous avais pas dit, c'est que lftp sait aussi transfrer des fichiers par SSH ! Pour l'installation et la configuration de lftp, reportez-vous la section Le
ftp
en console.
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
Ensuite, les commandes sont exactement les mmes que lors de l'utilisation de lftp comme client FTP !
5.2.En graphique
GNOME permet de se connecter un serveur SSH directement dans Nautilus. Comme pour FTP, cela permet d'accder aux fichiers distants depuis toutes les applications GNOME. Pour cela, allez dans le menu Raccourcis > Se connecter un serveur , puis choisissez SSH , et rglez les paramtres de connexion (Figure40.1). Figure40.1.Connexion un serveur SSH
6.2.La pratique
en console Dans une console, lancez ssh-agent en valuant les commandes qu'il crit sur sa sortie:
% eval $(ssh-agent)
% ssh-add
Il vous demande alors votre pass phrase . Maintenant que votre clef a t transmise l'agent, vous pouvez vous connecter sans entrer de mot de passe toutes les machines pour lesquelles vous avez mis votre clef publique dans le fichier ~/.ssh/authorized_keys .
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
en mode graphique Si vous utilisez GDM, l'agent SSH a dj t lanc par GDM. Vous n'avez donc plus qu' excuter sshadd une fois que vous tes connect.
o 2012 est le port sur la machine cliente partir duquel la connexion entre dans le tunnel SSH (le port doit tre suprieur 1024 si on ne veut pas avoir lancer le tunnel en tant que root , et le pare-feu ne doit pas bloquer ce port). Ensuite, il suffit de lancer un navigateur Web en lui demandant de se connecter en local sur ce port :
% w3m http://localhost:2012
% telnet nom_DNS_du_serveur_telnet
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]
et ensuite rentrez votre login et votre mot de passe quand il vous le demande.
http://formation-debian.via.ecp.fr/ssh.html[10/02/2013 11:09:00]