date: 12 Oct 2009 title: Home serveur : utilisation de clés pour SSH tags: agent, athentification, clé publique, home serveur, planet-libre, ssh categories: Configuration d'un home serveur, GNU-Linux et Logiciels Libres OpenSSH supporte plusieurs types d'authentifications : mots de passe, clés publiques, en fonction de l'hôte, ... Nous allons ici voir l'authentification par clés publiques. Si vous n'êtes pas trop à l'aise avec la notion de clé publique / clé privée, vous pouvez aller jeter un oeil sur Wikipédia Jusqu'à indication contraire, les commandes ci dessous sont à exécuter sur votre ordinateur, pas sur le serveur. Avant tous, pour plus de commodité, éditez le fichier /etc/ssh/ssh_config (le client ssh). On va préciser une bonne fois pour toute le port de votre serveur, car jusqu'à présent, vous deviez taper :
ssh -p3030
Rajoutez ces 2 lignes dans le fichier, avant la ligne Host * :
Host 192.168.0.10
Port 3030
Adaptez bien sûr à votre situation l'IP et le port.
Maintenant, votre client ssh sait qu'il faut utiliser le port 3030 pour se connecter à votre serveur.
ssh-keygen
Un mot de passe (passphrase) est alors demandé. Il sert à verrouiller la clé privé. En effet si vous ne mettez pas de mot de passe, n'importe qui qui arrive à se procurer votre clé pourra se connecter au serveur, sans aucune restriction. Il n'est cependant pas rare de ne pas mettre de mot de passe : ça permet de pouvoir exécuter automatiquement (dans un script) des commandes d'administrations à distance (sauvegardes, ...). Mais nous allons remédier à ce problème par la suite.
Copiez la clé publique sur votre serveur :
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.10
Répétez éventuellement cette manip sur vos autres PC qui auront accès au serveur SSH.
Voila, maintenant si vous essayez de vous connecter, ssh (le client) vous demandera votre mot de passe pour utiliser la clé privé. Notez que plus aucun mot de passe n'est envoyé au serveur.
À partir de là, vous pouvez choisir : actuellement, votre serveur ssh accepte les authentifications par mots de passe ou par clés.
Si vous ne comptez vous connecter à votre serveur que depuis votre PC, alors vous pouvez désactiver l'authentification par mot de passe sur le serveur (fichier /etc/ssh/sshd_config) :
PasswordAuthentication no
Par contre si vous vous baladez entre plusieurs ordinateurs «publics», vous avez aussi la possibilité de mettre votre clé privé sur une clé USB (on voit bien l'intérêt de mettre un mot de passe dessus dans ces cas là).
À vous de voir donc.
ssh-add
Il la trouvera tous seul comme un grand si vous l'avez pas déplacé ou renommé. Donnez votre mot de passe pour la dernière fois.
Enfin vous pouvez lancer ssh-agent :
ssh-agent
Suivant votre distribution / OS, vous pouvez ajouter le programme ssh-agent pour qu'il se lance au démarrage de votre session.