Comment activer les connexions SSH sans mot de passe sur Linux

C’est une excellente idée de se connecter à votre serveur SSH sans mot de passe. Sérieusement, débarrassez-vous-en. Il n’est pas nécessaire d’utiliser un mot de passe sur l’un des services les plus attaqués sur les serveurs Linux, n’est-ce pas ? Sécuriser un serveur SSH en utilisant l’authentification standard par mot de passe est une mauvaise idée. Les attaquants peuvent facilement forcer les mots de passe, et lorsqu’ils sont la seule chose qui se dresse entre un acteur malveillant et votre serveur, vous devriez définitivement être nerveux.
Table des matières
- Installer les paquets
- Générer votre clé SSH sous Linux
- Envoyer votre clé à l’hôte Linux distant
- Tester votre connexion SSH sous Linux
- Configurer SSH pour bloquer les mots de passe
- Questions fréquentes
C’est pourquoi l’authentification par clé RSA est bien meilleure. Vous pouvez configurer et sécuriser votre serveur Linux pour n’autoriser l’accès qu’aux ordinateurs qui détiennent les clés RSA qui ont déjà été acceptées. Quiconque d’autre sera immédiatement rejeté. En prime, vous pouvez créer ces clés avec ou sans mot de passe, ce qui dépend entièrement de vous. Une clé forte sans mot de passe est acceptable dans la plupart des cas, cependant.
Si vous utilisez également des appareils Linux à la maison, vous avez l’avantage supplémentaire de la commodité. Dites que vous souhaitez configurer le transfert X SSH de votre station de travail Linux vers votre ordinateur portable. Voulez-vous vraiment entrer votre mot de passe chaque fois que vous exécutez un programme distant ? Configurez des clés SSH, et vous n’en aurez pas besoin.
Installer les paquets
Il y a quelques paquets dont vous avez besoin. Vous en avez probablement déjà certains, mais il est bon de vérifier. Les paquets sont les mêmes sur le serveur et le client. Cependant, il y a aussi de bonnes chances que les deux machines soient des serveurs et des clients l’une pour l’autre (situation à domicile), donc vous voudrez peut-être vous assurer que vous avez installé ces paquets.
Le méta-paquet OpenSSH n’est pas installé par défaut sur les systèmes Debian ou Ubuntu. Si vous ne l’avez pas encore installé, vous pouvez le faire en exécutant la commande suivante :
sudo apt install ssh
Générer votre clé SSH sous Linux
Il est vraiment facile de générer votre clé SSH sous Linux. Dites simplement à OpenSSH que vous devez générer la clé. Il est également bon de spécifier le nombre de bits avec le drapeau -b et le type avec -t. Une clé de 4096 bits est préférable, car elle offre un cryptage plus fort.
ssh-keygen -t ed25519Tout d’abord, l’utilitaire vous demandera où vous souhaitez stocker la clé. Appuyez simplement sur Entrée pour le répertoire par défaut. Lorsqu’il vous demande un mot de passe, laissez-le vide pour une clé sans mot de passe et une authentification sans mot de passe. Si vous voulez utiliser un mot de passe pour votre clé, entrez-le ici.
Votre ordinateur prendra quelques secondes pour générer votre clé. Une fois terminé, il affichera une représentation en ASCII de votre clé dans le terminal.
Envoyer votre clé à l’hôte Linux distant
Pour utiliser votre clé, vous devrez l’envoyer à votre serveur distant. OpenSSH a également un autre utilitaire intégré pour cela. Dites-lui où se trouve votre clé et quel utilisateur sur le serveur y associer.
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_hostRemplacez ip_remote_host par l’adresse IP réelle de l’hôte distant, que vous gérerez via SSH. Remplacez username par le nom d’utilisateur réel sur l’hôte distant.

Il est crucial que vous utilisiez l’option -i pour spécifier le fichier d’identité contenant votre clé publique. Si vous essayez d’utiliser votre clé SSH sans cette option, vous pourriez obtenir une erreur.
Tester votre connexion SSH sous Linux
Avec votre clé SSH sur le serveur distant, vous pouvez maintenant tester si votre connexion fonctionne correctement.
Connectez-vous avec la commande suivante :
ssh username@ip_remote_hostL’hôte distant vous connectera sans demander le mot de passe du compte utilisateur.

Cependant, si vous avez fait une erreur pendant le processus, le démon SSH reviendra automatiquement à l’authentification par mot de passe pour votre compte utilisateur. Cela vous permet d’accéder à votre serveur distant même si vous avez une clé RSA non fonctionnelle.

Configurer SSH pour bloquer les mots de passe
Pour la meilleure sécurité, vous devez désactiver les connexions par mot de passe SSH sur votre serveur Linux. De manière similaire à l’activation de l’authentification à deux facteurs dans SSH, cela empêche quiconque de forcer son chemin vers votre serveur.

Il est important de s’assurer que vous pouvez vous connecter de manière fiable avec votre clé SSH avant de faire cela, car il est possible de se verrouiller hors de votre serveur distant si vous avez une clé défectueuse.
Vous pouvez trouver le fichier de configuration pour votre démon SSH dans “/etc/ssh/sshd_config.” Ouvrez le fichier sur le serveur en utilisant sudo et votre éditeur de texte préféré. Par exemple, ouvrez ce fichier avec nano en exécutant la commande suivante :
sudo nano /etc/ssh/sshd_configTrouvez les lignes ci-dessous en appuyant sur Ctrl + W et modifiez-les pour qu’elles ressemblent à l’exemple. Décommentez les deux entrées et changez les valeurs en no.
PasswordAuthentication no
PermitEmptyPasswords no
PasswordAuthentication spécifie s’il faut utiliser l’authentification par mot de passe. Nous avons défini cela sur “no” car nous voulons utiliser uniquement des clés SSH.
PermitEmptyPasswords spécifie si le serveur autorise la connexion avec un mot de passe vide. Vous ne devriez jamais autoriser cela, donc nous l’avons défini sur “no.”
Ensuite, trouvez la ligne “UsePAM” et changez-la en “no.” Cela empêchera le démon d’utiliser des méthodes d’authentification (mot de passe, Kerberos, etc.) autres que les clés SSH.
UsePAM no
Enregistrez le fichier en appuyant sur Ctrl + O, puis Ctrl + X et rechargez le serveur SSH.
sudo systemctl restart sshMaintenant que vous avez configuré avec succès votre serveur pour n’utiliser que des clés SSH pour l’authentification, quiconque essayant de se connecter sans une clé RSA valide sera immédiatement refusé.

Questions fréquentes
Je reçois un “Connection refused” lorsque j’envoie ma clé SSH à mon serveur Linux. Comment puis-je résoudre cela ?
Assurez-vous que le serveur SSH fonctionne sur l’hôte distant. Vous pouvez vérifier cela en exécutant sudo systemctl status ssh. Si le service n’est pas en cours d’exécution, vous pouvez le démarrer avec cette commande : sudo systemctl start ssh.
Si un pare-feu fonctionne sur le serveur, assurez-vous que le port 22 est ouvert. Vous pouvez le faire en exécutant sudo ufw status. Si SSH n’est pas répertorié, vous pouvez l’activer en exécutant cette commande : sudo ufw allow ssh.
Je reçois une erreur “Permission denied (publickey)” lorsque j’essaie de me connecter. Que dois-je faire ?
Cette erreur signifie que vous avez configuré votre serveur pour utiliser des clés pour l’authentification, mais que vous essayez toujours de vous connecter avec un mot de passe. Cela peut être dû à une clé RSA manquante ou à un paramètre SSH incorrect. Vérifiez que vous avez correctement copié votre clé publique sur le serveur et que vous spécifiez la bonne clé publique lorsque vous vous connectez.
Je reçois une erreur “Host key verification failed” lorsque j’essaie de me connecter. Comment puis-je résoudre cela ?
Cette erreur signifie que la clé d’hôte du serveur SSH a changé. Cela peut se produire si le serveur a été réinstallé. Vous pouvez régénérer une nouvelle clé publique et la copier sur l’hôte distant. Répétez les étapes de cet article pour régénérer et ajouter la nouvelle clé au serveur.
Est-il possible d’utiliser plusieurs clés SSH sur le même serveur Linux distant ?
Oui. Vous pouvez utiliser l’option -f dans OpenSSH pour spécifier la clé exacte que vous souhaitez utiliser pour vous connecter à un serveur distant. Par exemple, exécuter ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address vous connectera à votre serveur distant en utilisant la clé “id_rsa_2” au lieu de la clé par défaut “id_rsa.”
Cependant, il est important de noter que cette commande ne fonctionnera que si votre serveur distant reconnaît déjà votre nouvelle clé. Vous devez d’abord la copier sur votre serveur distant en utilisant ssh-copy-id. Comme pour les étapes ci-dessus, vous pouvez le faire soit par mot de passe, soit par authentification par clé RSA.
Je reçois une erreur “Permission Denied” chaque fois que j’essaie de copier ma clé SSH sur mon serveur.
Ce problème est très probablement dû à un problème de permissions sur votre serveur distant. Dans la plupart des cas, l’utilitaire ssh-copy-id devrait résoudre correctement tout problème d’accès dès qu’il se connecte à votre serveur distant. Cependant, il existe des cas où cette fonctionnalité échoue et ne parvient pas à copier correctement le “id_rsa” de votre machine locale.
Pour résoudre cela, connectez-vous à votre serveur distant et exécutez chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh. Cela définira les bons bits de permission pour le dossier “.ssh” et son contenu.
Crédit d’image : Unsplash. Toutes les modifications et captures d’écran par Ramces Red.