Ceci est une ancienne révision du document !
~~CLOSETOC~~
Configurer une connexion SSH par clé
Le principal mode de connexion à distance sur un serveur Linux est le SSH (Secure SHell). 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.
<note>Cette procédure a été réalisée et testée sur une VM debian 10.</note>
<note warning>Cette procédure nécessite des droits root. Faîtes donc attention à ce que vous faîtes.</note>
Prérequis
Pour se connecter en SSH à un serveur Linux il faut à minima :
- Un serveur
SSHinstallé 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
22par une autre valeur, il faudra dans ce cas, adapter le pare-feu. - On décommente la ligne
ListenAddresset 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
<note>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
</note>
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
SSHlira 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. Le mécanisme SSL (Secure Socket Layer) 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 :
— Nicolas THOREZ 2020/02/20 10:02
Discussion