Connexion en SSH avec une clef publique
Rédigé par Nicolas Sulek
Aucun commentaire
Classé dans : Services réseaux
Configuration du serveur SSH
On commence par configurer le serveur sshd.
Pas de grosses modifications, il suffit de rajouter ou de modifier le fichier /etc/ssh/sshd_config de la sorte :
# on autorise les connexions a base de clef
PubkeyAuthentication yes
# on interdit les connexions par mot de passe
PasswordAuthentication no
# on change la localisation du fichier des clefs autorises authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
Problème, malgré le PasswordAuthentication no, les connexions par mot de passe peuvent encore été autorisées. C'est le cas sous Debian, à cause de la configuration de PAM relative à SSH. Il faut en fait rajouter
UsePAM no
dans /etc/ssh/sshd_config. Voilà pour la configuration du démon sshd.
Génération des clefs avec l'algorithme DSA
Pour générer les clefs avec DSA, rien de plus simple. Sur le poste client, 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 (dans le répertoire .ssh de l'utilisateur courant)
- la passphrase protégeant cette clef, à évidemment ne 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.
Rajout des clefs autorisées sur le serveur SSH
Pour autoriser certaines clefs publiques à se connecter au serveur SSH, il suffit d'utiliser ssh-copy-id. Par exemple,
ssh-copy-id -i /home/toto/.ssh/id_dsa.pub toto@ip_serveur_ssh
Évidemment, 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é :-)