====== 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.serviceLe 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~~