Voulant sécuriser un peu plus mes connexions, je me suis décidé à virer les connexions SSH par mots de passe, qui peuvent être cassés, en attaquant à coups de dictionnaires par exemple, et en mettant des connexions uniquement avec un couple de clés RSA ou DSA.

D'abord, il faut configurer le serveur sshd. Pas de grosses modifications, il suffit de rajouter ou de modifier le fichier /etc/ssh/sshd_config de la sorte :

PubkeyAuthentication yes # on autorise les connexions à base de clef
PasswordAuthentication no # on interdit les connexions par mot de passe

Problème, malgré le PasswordAuthentication no, les connexions par mot de passe peuvent encore été autorisées. C'est le cas sous Debian, et tout ça à cause de la configuration de PAM relative à ssh. N'ayant pas encore trouvé ce qu'il faut modifier dans le fichier /etc/pam.d/ssh pour désactiver les mots de passe, j'ai rajouté

UsePAM no

dans /etc/ssh/sshd_config. Voilà pour la configuration du démon sshd. Passons à la génération de clefs.

Sur le poste client, rien de plus simple, il suffit de taper

ssh-keygen -t dsa

pour générer le couple clef privée/clef publique DSA.

Après avoir validé cette commande, deux questions vont être posées :
- l'emplacement où stocker la clef privée, le choix par défaut convient parfaitement
- la passphrase protégeant cette clef, à évidemment pas oublier :D

Et voilà, les clefs sont générées ! La clef privée se trouve dans $HOME/.ssh/id_dsa et la clef publique dans $HOME/.ssh/id_dsa.pub, $HOME étant le répertoire de l'utilisateur sous lequel ont été créées les clefs. La clef publique doit maintenant être exportée vers le serveur ssh afin de pouvoir nous identifier.

Pour ça, il suffit d'utiliser ssh-copy-id. Par exemple,

ssh-copy-id -i /home/toto/.ssh/id_dsa.pub toto@ip_serveur_ssh

Evidemment, il faut que le compte utilisateur existe sur le serveur :D Seul problème de cette méthode est qu'elle ne fonctionne qu'à condition que le serveur ssh utilise le port par défaut de SSH, donc le 22 :-/

Sinon, il faudra copier manuellement la clef publique sur le serveur. Dans ce cas, il faut éditer ou créer sur le serveur le fichier authorized_keys situé dans /home/toto/.ssh et y recopier le contenu de la clef publique.

Voilà, on a enfin un beau serveur sshd un peu plus sécurisé :-)


Outils personnels