Comment configurer une clé SSH sur Linux
La technologie SSH est un outil puissant qui permet de masquer le trafic VPN, de sécuriser les connexions aux sites web, et bien plus encore. Cependant, la nécessité de saisir un mot de passe à chaque connexion à une machine distante peut s'avérer contraignante. Que vous soyez un développeur devant se connecter simultanément à plusieurs serveurs via un script Bash, ou simplement un utilisateur régulier de Secure Shell las de taper sans cesse votre mot de passe, il existe une solution : la connexion SSH sans mot de passe. Cette méthode repose sur la génération d'une clé SSH sécurisée sur la machine hôte, clé qui servira de sésame pour accéder à l'ordinateur. Ainsi, toute personne possédant cette clé pourra se connecter, même sans connaître le mot de passe. Voici la marche à suivre.
Que sont les clés SSH ?
Une clé SSH est un fichier d'identification unique utilisé avec Secure Shell. Son rôle est d'authentifier l'utilisateur et de le considérer comme « de confiance » lors de la connexion. Ces clés sont bien plus que de simples fichiers : elles permettent de s'identifier. Avec SSH, on peut se connecter à l'aide d'une clé plutôt que d'un mot de passe. Cela signifie que, au lieu de saisir un mot de passe à chaque connexion SSH, vous utiliserez la clé SSH.
Cette clé SSH est stockée de manière sécurisée sur votre système Linux. Une fois configurée, vous pouvez vous connecter à la machine distante autant de fois que vous le souhaitez, sans avoir à entrer de mot de passe.
Comment générer des clés SSH sécurisées
Pour générer une clé SSH sécurisée, il faut d'abord s'assurer que SSH est opérationnel sur votre machine. Cela ne signifie pas que vous devez obligatoirement avoir un serveur SSH configuré, mais simplement que les outils SSH de base fonctionnent sur votre PC Linux. Si vous ne savez pas comment configurer SSH, vous trouverez de nombreux guides en ligne.
Il est essentiel de générer les clés SSH sur le système hébergeant le serveur SSH. Évitez de les générer sur une autre machine, puis de les copier sur l'hôte SSH, cela ne fonctionnera pas.
Pour lancer la génération de la clé, ouvrez un terminal et exécutez la commande suivante :
ssh-keygen -t rsa
La commande ssh-keygen affichera le message « Génération d'une paire de clés RSA publique/privée ». Cela indique que le système crée une clé publique et une clé privée pour votre usage. La clé publique peut être diffusée librement car elle permet uniquement d'authentifier le client. En revanche, la clé privée doit absolument rester confidentielle et ne jamais être partagée avec quiconque. D'où son nom, « privée ».
Par défaut, les clés sont enregistrées dans le répertoire /home/utilisateur/.ssh/ sous le nom de id_rsa (pour la clé privée) et id_rsa.pub (pour la clé publique).
Attention : Ne supprimez surtout pas le répertoire ~/.ssh, car il contient vos clés. Toute modification ou suppression de ce répertoire rendra impossible la connexion à distance et affichera un message d'erreur bloquant l'accès.
Déployer les clés SSH sur une machine distante
Une fois les clés SSH (publique et privée) générées, vous devez les copier sur les systèmes distants auxquels vous souhaitez vous connecter sans mot de passe. Il est important de répéter ce processus pour toutes les machines avec lesquelles vous prévoyez de vous connecter par SSH. Les machines ne disposant pas de la clé devront toujours utiliser la méthode du mot de passe.
Voici un exemple pour ajouter les clés à un système distant. Assurez-vous d'effectuer cette opération depuis la machine hôte via SSH :
ssh utilisateur@nom-du-serveur-distant mkdir -p .ssh
Cette commande crée un dossier caché ~/.ssh dans le répertoire personnel de la machine distante (en utilisant l'utilisateur avec lequel vous vous connectez). Ce dossier est crucial car c'est là que nous allons copier les fichiers de clé SSH nouvellement créés.
Pour copier les fichiers de clés SSH, exécutez la commande suivante depuis la machine hôte SSH vers la machine distante :
cat .ssh/id_rsa.pub | ssh utilisateur@nom-du-serveur-distant 'cat >> .ssh/authorized_keys'
La copie peut prendre quelques secondes, selon la vitesse du réseau. Une fois terminée, le PC distant possédera les clés et pourra se connecter au PC hôte SSH sans nécessiter de mot de passe.
Sauvegarder vos clés SSH
Les clés SSH sont précieuses car chacune est unique. Il est donc fortement recommandé de les sauvegarder. Cependant, le stockage non sécurisé de ces clés pourrait les rendre vulnérables. Si quelqu'un s'en emparait, il pourrait les utiliser à votre insu. Comment alors sauvegarder une clé SSH de manière sécurisée ? La solution est le chiffrement.
La méthode la plus rapide, efficace et simple pour chiffrer vos clés est d'utiliser GnuPG. Cet outil est intégré à la plupart des distributions Linux et est devenu un standard pour le chiffrement de fichiers. Pour installer GnuPG, ouvrez un terminal et recherchez « gpg » dans votre gestionnaire de paquets. Le programme devrait être facile à trouver, même sur les distributions Linux les moins courantes.

Une fois GPG installé, lancez le processus de chiffrement en compressant votre répertoire ~/.ssh dans une archive tar. Cela évite d'avoir à chiffrer individuellement chaque fichier du répertoire ~/.ssh.
tar -czvf ssh-stuff.tar.gz /home/utilisateur/.ssh
Une fois la compression terminée, passez au chiffrement :

Important : avant de chiffrer, lancez gpg dans le terminal pour générer un nouveau trousseau de clés.
gpg -c ssh-stuff.tar.gz
Une fois le processus de chiffrement terminé, GnuPG générera un fichier nommé « ssh-stuff.tar.gz.gpg ». Vous pouvez maintenant supprimer la version originale non chiffrée. Pour déchiffrer votre archive de sauvegarde, utilisez la commande suivante :
gpg ssh-stuff.tar.gz.gpg