Login SSH sans mot de passe

Image illustrant l'article : Login SSH sans mot de passe

Login SSH sans mot de passe

par Korben -

Je suis en train de re-paramétrer des backups depuis mon NAS avec Rsync et du coup, j’ai autorisé une clé SSH afin de ne pas avoir de mot de passe à entrer (et pouvoir mettre la commande Rsync dans un cron).

Voici donc la procédure quick&dirty que j’ai utilisée pour le jour où vous aurez besoin d’un login ssh sans mot de passe.

Pour cela, sur la machine locale, il suffit de faire un petit :

ssh-keygen -t dsa -f $HOME/.ssh/id_votrecle -P ''

Cela générera une clé sans passphrase. Vous pouvez ajouter une passphrase, mais dans ce cas, il faudra la préciser en clair dans vos scripts en faisant un “export PASSPHRASE=mapassphrase” avant de balancer la commande SSH.

Copiez la clé publique comme ceci sur le serveur distant :

scp -p /root/.ssh/id_votrecle.pub [email protected]:/root/.ssh/

xxx.xxx.xxx.xxx représente l’IP de la machine distante.

Hop, c’est copié.

Pensez aussi à autoriser les authorized_keys dans sshd_config

nano /etc/ssh/sshd_config

Et décommentez

AuthorizedKeysFile %h/.ssh/authorized_keys

Rechargez la config ssh

/etc/init.d/ssh force-reload

Copiez ensuite votre clé publique dans le fichier authorized_keys

cat id_votrecle.pub >> authorized_keys

Sachez qu’il est possible de préciser l’origine de la connexion dans le fichier authorized_keys avec le paramètre “from” (je vous laisse creuser ça).

Et voilà !

Maintenant sur votre machine locale, pour vous connecter à votre serveur distant simplement avec la clé, il suffit de la préciser comme ceci avec le paramètre -i :

ssh -i /root/.ssh/id_votrecle [email protected]

Et du coup, pour ma commande Rsync par exemple, ceci se présente comme ça :

rsync -e “ssh -i /root/.ssh/id_votrecle” -av [email protected]:/source/ /destination/

Vous avez surement mille autres variantes en tête. Moi j’ai fait ça comme ça, rapidement, mais n’hésitez pas à partager vos compléments d’astuces dans les commentaires.