Comment résoudre l’erreur SSH « Permission refusée (publickey) » ? SSH sous Linux ?

SSH est un outil utile pour se connecter à des machines distantes, mais vous pouvez rencontrer une erreur « Permission denied (publickey) » impliquant votre clé publique sous Linux. Heureusement, il existe des solutions simples pour résoudre ce problème.

Qu’est-ce qu’une clé publique ?

Lorsque vous générez une paire de clés pour SSH sous Linux, vous recevez une clé publique et une clé privée. La clé privée restera un secret bien gardé, mais c’est la clé publique qui sera transmise aux serveurs distants pour vous permettre de vous connecter sans mot de passe. Votre client SSH local fera correspondre la clé publique à la clé privée lorsque vous vous connecterez.

L’avantage de cette méthode est que vous ne devez communiquer que la clé publique. Tant que vous gardez votre clé privée privée, cette méthode devrait vous protéger en cas de compromission de votre clé publique. La clé publique sera inutile en soi.

OpenSSH, le client et serveur SSH le plus largement utilisé dans le monde open source, exige que le fichier contenant les clés publiques sur la machine distante (« .ssh/authorized_keys » dans votre répertoire personnel), ait certaines permissions. Il ne fonctionnera pas si les autorisations d’écriture sont définies pour d’autres utilisateurs, ce qui est connu sous le nom de « world-writable ». Le nom du répertoire commençant par un point (.), il n’apparaîtra pas dans les listes ls, sauf si vous utilisez la commande ls -A.

Voir aussi :  GNOME 43 débarque avec des améliorations majeures de l'interface utilisateur du bureau Linux et de la sécurité des périphériques.

Les autorisations peuvent changer si le fichier a été copié à partir d’un autre ordinateur ou si vous l’avez créé vous-même. Heureusement, ce problème est facile à résoudre.

Vérifiez les autorisations de votre clé publique

Le fichier authorized_keys est simplement un fichier en texte clair qui contient toutes les clés publiques des clients que vous souhaitez voir se connecter à votre compte sur la machine distante. Pour connaître ses autorisations, utilisez la commande ls avec l’option -l :

Cette commande affiche les paramètres de permission pour le propriétaire, le groupe et les autres utilisateurs. Faites attention aux six dernières lettres de la chaîne. Si elles contiennent « w », cela signifie que le groupe ou d’autres personnes peuvent écrire sur le fichier, ce qui le rend peu sûr.

Vous voudrez que ce fichier soit accessible en écriture par vous, mais pas par le groupe ou d’autres personnes. Pour donner l’accès aux bons utilisateurs, vous pouvez modifier les permissions avec chmod.

Il y a deux façons de procéder : numériquement et symboliquement.

La méthode numérique est plus rapide, mais vous devez mémoriser les numéros de permission octaux :

La méthode symbolique est plus mnémotechnique :

Copier les clés en toute sécurité avec ssh-agent

Vous pouvez copier et coller manuellement toutes les clés publiques de votre machine dans le fichier ~/.ssh/.authorized_keys mais l’utilisation du programme ssh-agent réduira les risques d’erreurs de permissions.

Voir aussi :  Comment installer et utiliser GNU nano pour éditer des fichiers sous Linux

Pour lancer le programme ssh-agent, utilisez la commande suivante :

Pour vous connecter à un serveur distant à l’aide de ssh-agent, utilisez l’option -A avec ssh

Vérifier les paramètres sshd du serveur distant

Si l’une de ces tentatives échoue, vous devrez peut-être modifier la configuration du serveur sshd sur la machine distante si vous disposez d’un accès root. Si ce n’est pas le cas, vous devrez probablement contacter l’administrateur du système pour qu’il vous aide à résoudre les problèmes de connexion SSH. Il s’agit d’une méthode de dernier recours, car elle pourrait rendre votre système moins sûr.

Le fichier de configuration de sshd pour l’ensemble du système est le suivant /etc/ssh/sshd_config. Comme il appartient à root, vous devez utiliser sudo pour le modifier. Par exemple, pour l’éditer avec Vim :

Pour permettre à sshd de vous laisser vous connecter même si votre fichier authorized_keys est inscriptible par le monde, définissez l’option « StrictModes » à « no » dans ce fichier.

Sauvegardez-le et redémarrez le serveur SSH :

Vous pouvez maintenant corriger les erreurs de permissions des clés publiques SSH

Il se peut que vous rencontriez des erreurs concernant les clés publiques SSH sur des systèmes distants. Heureusement, la plupart du temps, tout ce que vous avez à faire est de vérifier et de définir les permissions du fichier afin que personne d’autre ne puisse voir votre clé. Vous pouvez également utiliser ssh-agent pour des connexions plus fiables. En dernier recours, vous pouvez rendre le serveur SSH moins strict.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *