Installer sa clé SSH sur un serveur distant
Par NiKo le lundi 29 août 2005, 23:33 - Ubuntu
- Lien permanent -
14 commentaires -
Tags :
Qui n'a jamais pesté d'avoir à constamment taper et se souvenir de dizaines de mots de passe, quand on utilise plusieurs serveurs différents ? Moi, en tous cas.
Le principe est simple : générer une clé privée et une clé publique, toutes deux cryptées, et d'ajouter votre clé publique à la liste des clés autorisées du serveur distant afin de permettre l'authentification automatique sur ce dernier. Ainsi, vous pouvez définir une seule et même passphrase (mot de passe) pour vous logguer à toutes vos machines 
Voici la procédure : d'abord - et si ce n'est déjà fait - il vous faut installer le client openSSH :
$ sudo apt-get update $ sudo apt-get install openssh-client
Il faudra de même disposer de ssh-server sur la machine distante.
Ceci fait, il vous faut générer vos clés publiques et privées :
$ ssh-keygen -t dsa -b 1024 Generating public/private dsa key pair.
Là, il vous faut répondre à une petite série de questions :
Enter file in which to save the key (/home/monlogin/.ssh/id_dsa):
Appuyez sur Entrée, vos clés seront sauvegardées dans le repertoire caché .ssh.
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Une fois votre passphrase entrée, un message de confirmation de création est affiché :
Your identification has been saved in /home/monlogin/.ssh/id_dsa. Your public key has been saved in /home/monlogin/.ssh/id_dsa.pub. The key fingerprint is: XX:8a:XX:91:XX:ae:XX:23:XX:2e:XX:ed:XX:4e:XX:b8 monlogin@mamachine
Ensuite, il vous faut ajouter votre clé publique à la liste des clés autorisées du serveur distant. En admettant que votre serveur se nomme toto.host.org et que votre nom d'utilisateur est titi [1], cela donne :
$ ssh-copy-id -i ~/.ssh/id_dsa.pub titi@toto.host.org Password:
Entrez le mot de passe de l'utilisateur titi sur la machine distante. Si l'opération d'ajout de votre clé a réussi, un message est affiché :
Now try logging into the machine, with "ssh 'titi@toto.host.org'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
Et voila, il ne vous reste plus qu'à lancer un ssh titi@toto.host.org, il vous sera demandé votre passphrase et vous serez loggué 
$ ssh titi@toto.host.org Enter passphrase for key '/home/monlogin/.ssh/id_dsa':
Elle est pas belle, la vie ? 
Pour aller plus loin
Vous pouvez automatiser encore plus le process d'accès à vos serveur en définissant des aliases, via votre fichier .bashrc. Ce sont des raccourcis de commandes propres à l'utilisateur courant du shell de la machine.
$ gedit .bashrc
Une fois le fichier ouvert, vous pouvez ajouter vos aliases en respectant la syntaxe suivante :
alias <raccourci>='<commande>'
Ce qui donne pour notre accès SSH à toto.host.org :
alias sshtoto='ssh titi@toto.host.org'
Sauvegarder le fichier. Pour que les modifications soient prises en compte, il faut recharger le fichier .bashrc :
. .bashrc
Voila ! Maintenant vous pouvez tester votre tout nouvel alias en lançant :
$ sshtoto
Cela ne vous dispensera pas cependant de saisir votre passphrase à chaque fois, mais c'est là un moindre mal et surtout un gage minimum de sécurité 
Notes
[1] On accède JAMAIS à un serveur en root directement. C'est TRÈS mal. De toutes façons, si vous utilisez sudo et que vous n'avez pas créé de compte root en lui assignant un mot de passe, le problème de ne se pose pas 
14 commentaires (Ajouter un commentaire)
Deux modestes remarques:
>générer une clé privée et une clé publique, toutes deux cryptées
- Tout d'abord il convient d'utiliser le mot "chiffrées" (déchiffrer et décrypter ne voulant pas du tout dire la même chose)
- La clé publique est par définition "publique" et donc non chiffrée.
Et en étant pinailleur, je préciserais peut etre "clé publique" dans le titre..au cas ou..
Me donne des idees de faire une petite suite ... on verra..
Corrigé, merci
La commande pour générer la clé ssh est "ssh-keygen" et non "ssh keygen"... Le tiret a été oublié
Guillaume > Ben si, il suffit de copier ses clés sur l'autre machine
tres bon ton billet Niko
, mais si l'on veut se connecter d'une autre machine ( une machine nouvelle ) , c'est plus possible.
( d'apres ce que j'ai lu ... )
Pratique ! Je testerais ça ce week end
Vraiment très pratique, merci !
On peut aussi utiliser
rsyncavec ssh pour synchronier deux machines. Cela fera certainement l'objet d'un prochain billet.La technique peut être utiliser aussi pour faire communiquer deux machines avec ssh, comme par exemple pour faire des copies sécurisés entre deux machines avec "scp" en passant par un script bash en cron.
a+
Et si vous avez souvent besoin de rebondir sur une machine avant de vous connecter sur la machine sur laquelle vous voulez vraiment aller, ce billet vous intéressera : http://www.lucas-nussbaum.net/blog.php/?2005/05/03/115-rebondir-avec-ssh (et si vous voulez voir ce genre de billets sur planet ubuntu-fr, vous pouvez toujours faire du forcing auprès de szdavid
tiens tiens... Mais je les connais ces commandes, je suis sûr de les avoir lues quelque part... ;o)
Bon. A part ça, tu peux me rappeler pourquoi il est TRES vilain de se connecter directement en root sur un serveur ? Je vois pas bien la différence entre un user qui connaît le mot de passe root et root tout court. Ca revient au même non ?
mieux que de créer des alias dans le .bashrc, on peu créer un fichier config dans .ssh/ qui se présente comme suit :
Il suffit ensuite de faire un ssh toto et le tour est joué.
On peut bien entendu créer plusieurs Host différents
pour éviter d'avoir à retaper justement la passphrase, il y la commande ssh-agent et ssh-add Il y a profusion de tuts à ce sujet...
Excellent ! Ca c'est de la bonne astuce bien pratique, je vais tester dès aujourd'hui ! Merci bien
La discussion continue ailleurs
Fedora Core 3 et SSH
Si comme moi vous avez plusieurs machine Unix à gérer, avec bien entendu plusieurs mot de pass pour chancun de vos comptes root sur le serveur, vous connaissez la difficulté et la perte de temps liée à se demander : " c'est quoi déjà le passe sur...