Je suis arrivé à me connecter en ssh sans rentrer de mot de passe sur le serveur. Outre la simplicité d'utilisation, selon la doc sur Internet, c'est une méthode plus sûre.
Le principe
On génère sur le client un couple de clé publique/clé privée. Puis on met la clé publique sur le serveur dans un fichier ~/.ssh/authorized_keys. Ensuite quand on tente de se connecter sans mot de passe, le serveur vérifié que le client détient une clé privée correspondant à une des clés publiques de son fichier ~/.ssh/authorized_keys. Si oui, il accepte la connexion.
Ce mode d'authentification est valable pour le seul compte ou le ~/.ssh/authorized_keys a été renseigné. Il est apparemment costaud, c'est un algo rsa.
La mise en oeuvre
1) Génération d'un couple de clé.
toto@leclient:$ ssh-keygen -t rsa
Ensuite on fait trois fois <Entrée> pour créer les clés aux endroits par défaut et sans passphrase.
On obtient deux fichiers dans ~/.ssh :
* id_rsa : contient la clé privée
* id_rsa.pub : Contient la clé publique correspondante
2) Copie de la clé publique sur le serveur (par n'importe quel moyen) dans le ~ du compte sur lequel on va se connecter avec l'authentification par clés.
3) Copie de la clé publique dans le fichier ~/.ssh/authorized_keys
toto@leserveur:$ cat id_rsa.pub >> ~/.ssh/authorized_keys
A partir de là, si tout va bien si sur le client je fait :toto@leclient:$ ssh leserveur
Je suis connecté immédiatement sur le compte toto du serveur.
La siouxerie !
Si le serveur est configuré en mode de sécurité strict (c'est le cas par défaut sur UBUNTU), on peut avoir des problèmes à se connecter sans mot de passe.
Sur le serveur dans /etc/ssh/sshd_config , la ligne "StrictModes yes" indique que le serveur va être très pointilleux sur les droits du compte sur lequel on se connecte en ssh.
Dans ce cas, au minimum :
* Il faut que authorized_keys soit en mode 600. Il faut s'en assurer par :toto@leserveur:$ chmod 600 ~/.ssh/authorized_keys
* Il faut que seul l'utilisateur et le groupe aient des droits sur ~ /.ssh
Des droits accordés à tout le monde empêchent de se connecter sans mot de passe par ssh sur ce compte.
Cette siouxerie est pénible à trouver car, par défaut, si le serveur n'accorde pas la connexion sans mot de passe, il propose de s'authentifier avec le mot de passe. Le problème de droits sur ~/.ssh n'apparait que si on force le client à ne se connecter qu'en mode sans mot de passe. Dans ce cas, il y a echec de connexion mais on trouve ensuite une ligne très clair dans le /var/log/auth.log du serveur :"Authentication refused: bad ownership or modes for directory /home/toto/.ssh "
Pour forcer le client à ne se connecter qu'avec l'authentification par clé, il faut modifier le paramètrage du client dans /etc/ssh/ssh_config.
Il suffit de rajouter la ligne :PreferredAuthentications publickey
Voilou, j'ai encore beaucoup appris. Utile à mon avis.
Sinon, un examen de /var/log/auth.log fait peur : il y a une tentative
de connexion ssh toutes les 10 secondes sur mon serveur ! Gloups !
Je vais pouvoir automatiser mes Rsync sans bloquer que le mot de passe.
Le prochain truc : faire du Rsync depuis un poste windows.
Gwael
