Dans cet article nous allons voir comment mettre en place une authentification par clé sous SSH sous Linux. L'avantage de cette authentification est l'absence de la saisir du mot de passe. Des commandes pourront directement être envoyé au serveur distant depuis le serveur client.
Prérequis
Vous devez disposer du service SSH activé sur vos deux serveurs Linux
Vous devez autoriser l'authentification par clé sur vos serveur Linux
Procédure
MAJ - 01-10-2017
Serveur client : 192.168.10.78
Serveur distant : 192.168.10.79
On souhaite se connecter en SSH sur le serveur distant en s'authentifiant via une clé
Activer l'authentification par clé
Sur votre serveur distant
Editer le fichier /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config
Variable PubkeyAuthentication doit être à YES
Création d'une clé pour l'authentification
Sur votre serveur client
Saisir la commande suivante
# ssh-keygen
Valider les choix par défaut et ne pas mettre de passe phrase
Deux fichiers sont générés :
/root/.ssh/id_rsa = clé privé du client
/root/.ssh/id_rsa.pub = clé public du client
Autorisé la clé créée précédemment sur votre serveur distant
Sur votre serveur client
Saisir la commande suivante
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.79
Vous pouvez maintenant tester si votre authentification fonctionne
# ssh root@192.168.10.79
Pour information
La commande suivante "ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.79" copie le contenu du fichier /root/.ssh/id_rsa.pub dans le fichier /root/.ssh/authorized_keys du serveur distant
Exécution de commande SSH sur le serveur distant depuis le serveur client
Syntaxe : ssh@IP_DISTANT "COMMANDE"
Exemple :
# ssh root@192.168.10.79 "hostname"
En cas d'erreur
En fonction de la version du logiciel OpenSSH que vous utilisez, il est possible que l'authentification par clé soit refusée (en fonction du type de clé). Il est nécessaire de modifier la configuration de votre serveur SSH. Pour plus de détail, vous pouvez consulter l'article suivant :
SSH - userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]