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.

  1. On génère une clé RSA sur sa machine
  2. Modification des droits sur votre clé privée
  3. Envoie de la clé publique sur le serveur distant
  4. Modification des droits sur le serveur distant
  5. 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_HOST
DISTANT-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 :)

Show your support

Clapping shows how much you appreciated stadja@LTN’s story.