Tout sur comment se connecter à un serveur SSH sans mot de passe.
Pour des raisons de sécurité ou de praticité on a souvent besoin de se connecter depuis sa machine en SSH à un serveur distant sans utiliser de mot de passe. Dans ce cas, il “suffit” de configurer le serveur distant pour qu’il accepte la clé publique de sa machine et que tout se passe facilement sans accroc.
Facile non ?
Pourtant, avec moi, à chaque fois que j’essaye de faire ça y’a toujours quelque chose qui ne marche pas ! En gros, c’est souvent un problème de droit ou une étape mal faite… du coup ça bloque.
Voici donc, pas à pas, la recette pour pouvoir se connecter sans mot de passe à son serveur distant.
- On génère une clé RSA sur sa machine
- Modification des droits sur votre clé privée
- Envoie de la clé publique sur le serveur distant
- Modification des droits sur le serveur distant
- BIM !
Donc pour configurer tout ça il vous faut une machine Unix (Ubuntu ça marche bien hein) et les accès du serveur distant (login/mot de passe, c’est la dernière fois ou vous les utiliserez sur votre machine, normalement)
1. On génère une clé RSA sur sa machine
(on va vous demander une passphrase, moi je n’en mets pas, ça simplifie largement le processus… si vous voulez savoir ce que ça fait de ne pas utiliser de passphrase, lisez ceci)
Sur votre machine
$ cd
$ ssh-keygen -t rsa
2. Modification des droits sur votre clé privée
On vérifie que tout a bien fonctionné en regardant dans son dossier ~/.ssh
Sur votre machine
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts known_hosts.old
id_rsa c’est votre clé privée. Elle ne regarde que et seulement vous. Changeons ses droits en lecture seule pour vous
Sur votre machine
$ chmod 400 ~/.ssh/id_rsa
id_rsa.pub c’est votre clé publique, votre nouvelle amie qui va vous servir de sésame pour vous connecter sans mot de passe.
3. Envoie de la clé publique sur le serveur distant
Sur votre machine
$ ssh-copy-id DISTANT-USER@SERVER_HOSTDISTANT-USER: c’est l’utilisateur qui se connecte au serveur distant
SERVER_HOST : c’est votre hôte de connexion ou l’ip de votre serveur distant
4. Modification des droits sur le serveur distant
Connectez-vous sur votre serveur distant et listez les fichiers du dossier ~/.ssh
Sur le serveur distant
$ ls ~/.ssh
authorized_keys known_hosts
Dans certains cas, le fichier authorized_keys s’appelle authorized_keys2, si c’est votre cas, vous remplacerez dans la suite authorized_keys
par authorized_keys2
On va maintenant s’assurer que les droits sont bien configurés sur le serveur.
Sur le serveur distant
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
Enfin on vérifie les droits du dossier d’origine de l’utilisateur distant:
- il doit lui appartenir
- les droits ne doivent pas être trop ouverts
Sur le serveur distant
$ chown DISTANT-USER /home/DISTANT-USER
$ chmod 750 /home/DISTANT-USER
5. BIM !!!
On essaye si ça marche ?
Sur votre machine
$ ssh DISTANT-USER@SERVER_HOST ls
apple
beans
...
workspace
www
(enfin tout ce qu'il y a dans la home de l'utilisateur)
Si on ne vous a pas demandé de mot de passe mais qu’on vous a affiché le contenu du dossier home de l’utilisateur sur le serveur distant…
C’est que c’est bon.
Si ça marche pas, n’hésitez pas à commenter cette article et on en discutera :)