====== Configurer une connexion SSH par clé ====== --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/02/20 10:02// Le principal mode de connexion à distance sur un serveur Linux est le ''SSH'' (//**S**ecure **SH**ell//). Basiquement, il requiert un nom d'utilisateur et un mot de passe. On peut renforcer la sécurité de la connexion en y ajoutant une identification via clé ''RSA'', qui peut compléter ou remplacer le mot de passe, la clé elle-même pouvant être protégée par un mot de passe ou pas. Cette procédure a été réalisée et testée sur une VM debian 10. Cette procédure nécessite des droits ''root''. Faîtes donc attention à ce que vous faîtes. Les clés autorisées pour une connexion ''SSH'' le sont aussi pour une connexion ''SFTP'' (le serveur ''SSH'' gérant aussi le ''SFTP''). ===== Prérequis ===== Pour se connecter en ''SSH'' à un serveur Linux il faut à minima : * Un serveur ''SSH'' installé et en écoute. * Un pare-feu correctement configurée. Concernant le serveur ''SSH'', il est généralement installé par défaut ( ou son installation est proposée durant la phase d'installation du serveur). Dans le cas où, il faudrait l'installer à la main : * On met à jour les dépôts ''APT'' : apt-get update * On installe les paquets nécessaires : apt-get install -y openssh-server openssh-client Concernant le pare-feu, je vous laisse vous rediriger vers la documentation de votre solution sachant que le port d'écoute par défaut et le ''22''. ===== Configuration du serveur SSH ===== * On édite le fichier de configuration : nano /etc/ssh/sshd_config * On décommente la ligne ''Port''. * On peut modifier la valeur ''22'' par une autre valeur, il faudra dans ce cas, adapter le pare-feu. * On décommente la ligne ''ListenAddress'' et on modifie sa valeur par l'adresse IP du serveur. * On enregistre avec ''CTRL+O'' * On quitte avec ''CTRL+X'' * On redémarre le service ''SSH'' : systemctl restart sshd.service Le fichier de configuration contient de nombreuses options de sécurité et de log. Les modifications présentées ici sont le minimum à faire pour activer la connexion par clé. Pour plus d'informations sur les autres options : * man sshd * man sshd_config ===== Ajout des clés autorisées à se connecter ===== A ce stade, le serveur accepte les authentifications par clé. Encore faut-il qu'il sache qu'elles clés sont autorisées à se connecter au serveur. Pour cela, il va lire le fichier ''authorized_keys'', ce dernier se trouvant dans le dossier ''.ssh'', lui-même dans le dossier "home" de l'utilisateur. * Ainsi pour l'utilisateur "Nekan" se connectant à un serveur, le service ''SSH'' lira les clés contenues dans ''/home/nekan/.ssh/authorized_keys''. * Pour l'utilisateur "root" (non conseillé) se sera ''/etc/root/.ssh/authorized_keys''. ==== Exemple de fichier authorized_keys ==== # Nekan ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQE.......................................5ODsPuCdoodmzQ== nekan@shyrkasys # Shyrka ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA........................................BqLKk0FX0yBe2T/9yiXB0dqQ== shyrka@shyrkasys Chaque entrée est la clé publique de l'utilisateur qui cherche à se connecter. Pour les ajouter aux fichiers, il suffit d'éditer ces derniers et d'y coller le contenu des clés ''SSL'' publiques concernées. Pour le fonctionnement, le mécanisme ''SSL'' (//**S**ecure **S**ocket **L**ayer//) vérifie cette clé avec la clé privée de l'utilisateur et si la vérification est un succès, alors la connexion ''SSH'' est autorisée. * Créer des clés SSL : [[create_ssl_key|Lien]] ~~DISCUSSION~~