Vos clés publiques SSH vous donnent du fil à retordre? Essayez l'une de ces solutions.

SSH est un outil utile pour se connecter à des machines distantes, mais vous pouvez rencontrer une erreur « Autorisation refusée (publickey) » impliquant votre clé publique sous Linux. Heureusement, il existe des solutions simples que vous pouvez essayer 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 recevrez une clé publique et une clé privée. La clé privée restera avec vous comme un secret bien gardé, mais la clé publique est ce qui sera transmis 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 qu’il suffit de donner la clé publique. Tant que vous gardez votre clé privée privée, cela devrait vous protéger au cas où votre clé publique serait compromise. La clé publique sera inutile en elle-même.

OpenSSH, le client et serveur SSH le plus utilisé dans le monde open source, nécessite le fichier contenant tout clés publiques sur la machine distante (".ssh/authorized_keys" dans votre répertoire personnel), pour avoir certaines autorisations. Cela ne fonctionnera pas si les autorisations d'écriture sont définies pour d'autres utilisateurs, ce qui est connu comme étant « accessible en écriture partout ». Étant donné que le nom du répertoire commence par un point (.), il n'apparaîtra dans aucune liste ls à moins que vous n'utilisiez le commande ls-A.

Les autorisations peuvent changer si le fichier a été copié depuis un autre ordinateur ou si vous l'avez créé vous-même. Heureusement, c'est facile à résoudre.

Vérifiez vos autorisations de clé publique

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

ls -l ~/.ssh/authorized_keys

Cela affichera les paramètres d'autorisation pour le propriétaire, le groupe et les autres utilisateurs. Faites attention aux six dernières lettres de la chaîne. Si vous voyez "w" dessus, cela signifie que le groupe ou d'autres personnes peuvent y écrire, ce qui le rend peu sûr.

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

Il existe deux manières: numériquement et symboliquement.

La méthode numérique est plus courte, mais vous devez mémoriser les numéros d'autorisation octaux :

chmod 700 ~/.ssh/authorized_keys

La méthode symbolique est plus mnémonique :

chmod go-w ~/.ssh/authorized_keys

Copiez les clés en toute sécurité à l'aide de ssh-agent

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

Pour démarrer ssh-agent, utilisez cette commande :

eval "$(ssh-agent-s)"

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

ssh -A [email protected]

Vérifiez les paramètres sshd du serveur distant

Si l'un de ces efforts échoue, vous devrez peut-être apporter des modifications à la configuration du serveur sshd sur la machine distante si vous disposez d'un accès root. Sinon, vous devrez probablement contacter l'administrateur système pour vous aider à résoudre tout problème de connexion SSH. Il s'agit d'une méthode de dernier recours car elle pourrait rendre votre système moins sécurisé.

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

sudo vim /etc/ssh/sshd_config

Pour permettre à sshd de vous permettre de vous connecter même si votre fichierauthorized_keys est accessible en écriture partout, définissez l'option "StrictModes" sur "no" dans ce fichier.

Enregistrez-le et redémarrez le serveur SSH :

sudo systemctl restart sshd.service

Vous pouvez désormais corriger les erreurs d'autorisations de clé publique SSH

Vous pouvez rencontrer des erreurs concernant les clés publiques SSH sur les systèmes distants. Heureusement, la plupart du temps, tout ce que vous avez à faire est de vérifier et de définir les autorisations des fichiers 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.