L’authentification sur un serveur à l’aide d’une clé publique / privée a plusieurs avantages. Le premier est de permettre de se connecter au serveur sans utiliser de mot de passe. Le second est d’offrir une meilleure sécurité si l’on supprime la possibilité de se connecter par login/mot de passe et que l’on force les utilisateurs à utiliser ce système de clé.
La création de la paire de clé
Dans un premier temps, il est nécessaire de créer une clé publique privée sur sa machine en utilisant cette commande :
- ssh-keygen -t dsa
La commande demandera ou installer la clé privée, laissez l’emplacement par défaut à savoir /home/kent1/.ssh/id_dsa.
Puis elle vous demandera un mot de passe qui servira plus tard pour s’authentifier au serveur.
En plus de la clé privée, la commande créera votre clé publique dans ~/.ssh/id_dsa.pub.
NB : Si vous souhaitez par la suite modifier le mot de passe de la clé, il faudra utiliser la commande :
- ssh-keygen -p -t dsa
Dans le cas où votre machine utilise le système d’exploitation Windows, il vous faudra utiliser PuTTYgen pour la génération de vos clés.
La copie de votre clé publique sur le serveur
Afin de pouvoir utiliser cette clé pour s’authentifier au serveur souhaité, il est nécessaire de la copier dans les clés autorisées du compte utilisateur sur le serveur.
Il est donc nécessaire de se connecter au serveur :
- ssh user@mon_serveur
NB : "mon_serveur" est l’IP du serveur ou un FQDN qui pointe vers le serveur.
Puis de modifier (ou créer s’il n’existe pas) le fichier :
- mkdir ~/.ssh
- ~/.ssh/authorized_keys
Puis d’y coller le contenu de notre clé publique contenue dans le fichier ~/.ssh/id_dsa.pub contenue sur la machine cliente.
Dans le cas ou l’accès ssh par login / mot de passe simple est désactivé, l’intervention d’un administrateur ou d’une autre personne ayant l’autorisation de se connecter en tant que cet utilisateur est nécessaire.
Pour les utilisateurs ayant un client SSH récent et disposant de la commande ssh-copy-id, cette action peut être effectuée plus simplement en utilisant la commande suivante qui transfèrera la clé automatiquement sans nécessité de copier / coller manuellement :
- ssh-copy-id -i ~/.ssh/id_dsa.pub user@mon_serveur
Lors du simple ajout de clé (sans autre modifications de la configuration), il est nécessaire de redémarrer le server openssh afin qu’il prenne en compte le nouveau client.
Désactivation de la méthode d’authentification par mot de passe
Maintenant que notre clé est installée, on peut désactiver la méthode d’authentification par mot de passe. Il suffit d’éditer sur le serveur le fichier de configuration du serveur ssh :
- sudo nano /etc/ssh/sshd_config
Puis d’ajouter ou modifier la ligne :
- PasswordAuthentication no
Puis de redémarrer le serveur ssh :
- sudo /etc/init.d/ssh restart
Dorénavant seuls les utilisateurs autorisés à se connecter par clé pourront avoir accès au serveur et donc toute tentative d’intrusion étrangère sera rejetée.
NB : Il semble qu’il y ait un bug sur ubuntu, lorsque l’authentification par mot de passe est désactivée, il est impossible de se connecter au serveur et on obtient le message Permission denied (publickey). . La solution est d’utiliser la commande suivante pour se connecter :
- SSH_AUTH_SOCK=0 ssh mon_serveur
NB2 : Il est à noter que les clés sont valables pour une machine et un utilisateur particulier.
Aller plus loin :
Pour protéger un peu plus son système, il peut être efficace d’utiliser le logiciel fail2ban. Un tutoriel d’installation a été réalisé par Fil ici.