Clé publique SSH - Aucune méthode d'authentification prise en charge disponible (clé publique envoyée par le serveur)

80

J'ai une configuration de serveur 12.10 dans une machine virtuelle avec son réseau défini sur ponté (sera essentiellement considéré comme un ordinateur connecté à mon commutateur).

J'ai installé opensshd via apt-getet j'ai pu me connecter au serveur en utilisant putty avec mon nom d'utilisateur et mon mot de passe.

Je me suis ensuite efforcé de le faire utiliser une authentification par clé publique / privée. J'ai fait ce qui suit:

  1. Généré les clés en utilisant PuttyGen.
  2. Déplacé la clé publique vers /etc/ssh/myusername/authorized_keys(j'utilise des répertoires de départ cryptés).
  3. Mettre en place sshd_configcomme ça:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Lorsque je me connecte à l'aide de putty ou de WinSCP, un message d'erreur indiquant Aucune méthode d'authentification prise en charge disponible (clé publique envoyée par le serveur) s'affiche.

Si je cours sshden mode débogage, je vois:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Pourquoi cela se produit-il et comment puis-je résoudre ce problème?

F21
la source
Dans mon cas, j'ai deux instances AWS. L'un d'eux fonctionne parfaitement, l'autre fonctionne lors de la connexion via Intellij Idea, mais pas à partir de Putty, mais cela fonctionnait au début. Donc, dans mon cas, ça doit être quelque chose à propos du mastic
Marian Klühspies

Réponses:

70

Problème résolu:

On dirait qu'il y a eu un problème avec mon fichier de clé publique. PuttyGen créera un fichier de clé publique qui ressemble à ceci:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Cependant, cela ne fonctionnera pas, vous devez donc ouvrir la clé dans PuttyGen, puis la copier à partir de là (la clé sera alors au bon format et sur une ligne):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Collez ceci dans authorized_keysalors cela devrait fonctionner.

F21
la source
1
J'ai ouvert authorized_keysdans vi et enlevé tous les sauts de ligne et cela a fonctionné.
Luc
1
où se trouve le fichier de clé publique? Je n'utilise que du mastic.
Syler
1
J'ai fait toutes les choses ci-dessus mais le serveur envoie toujours Aucune méthode d'authentification supportée disponible (clé publique envoyée par le serveur)
Al-Alamin 12/12
Comment avez-vous su que cela ne marcherait pas / où avez-vous trouvé le format attendu?
Michael
Là où j'ai besoin de coller exactement quand vous dites "Coller ceci dans allowed_keys, alors cela devrait fonctionner." @ F21
Mahender Reddy Yasa le
20
  1. Editez le /etc/ssh/sshd_configfichier.
  2. Changer PasswordAuthenticationet ChallengeResponseAuthenticationà yes.

3a. Redémarrez ssh /etc/init.d/ssh restart.
OU
3b. mieux vous utilisezservice sshd restart

chasseur
la source
En effet, c’est un commentaire utile si vous avez des difficultés à connecter des logiciels vie ftp
cnu
Ça marche pour moi!
Asinox
8
Le but essentiel de l'authentification via un fichier de clé est d' éviter l' authentification par mot de passe. Vous devez donc définir ce paramètre PasswordAuthenticationsur no.
Pere
C'est la seule réponse qui m'a aidé. Je n'avais pas besoin d'authentification par clé publique / privée, mais je recevais ce message étrange.
Serge Rogatch
Merci à propos ChallengeResponseAuthentication, cela m’a résolu le problème sur Debian 10.0
realtebo
10

J'espère que cela pourrait aider quelqu'un d'autre avec les maux de tête que j'avais. F21 a raison de dire que vous devez copier la clé hors de la fenêtre de PuTTYGen au lieu de sauvegarder le fichier, mais après la copie, la façon dont vous la collez peut avoir un impact significatif sur le fonctionnement de votre clé. Certains éditeurs modifieront le texte au fur et à mesure que vous collerez ou feront quelque chose avec des nouvelles lignes ou quelque chose qui rend le fichier authorised_keys invalide.

Ce que j'ai trouvé être le moins susceptible de casser est de faire écho à la chaîne complète et de rediriger la sortie vers le fichier. En cliquant avec le bouton droit de la souris dans PuTTY pour coller la chaîne de clé dans la ligne de commande, cela fonctionne comme suit (avec l'exemple donné ci-dessus):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Vous allez vous retrouver avec ceci:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Un autre avantage de cette méthode est que vous pouvez ajouter plusieurs clés de cette manière en utilisant >> pour ajouter au lieu de> pour remplacer, par exemple:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

J'espère que ça aide quelqu'un.

Dave
la source
Cela ne marche pas pour les clés de 4096 bits ... ça dépasse la limite de caractères pour les caractères
Freedo
1
Peut être ou ne pas être une bonne idée pour supprimer cela de votre historique bash par la suite.
Jason Powers Murray
@JasonPowersMurray: c'est une clé publique. Le système de cryptographie à clé publique est conçu pour rester sécurisé lorsque la clé est publiée. Vous pouvez donc enregistrer les clés publiques dans l'historique Bash et ailleurs.
David Cary
9

Nous utilisions déjà le bon type de clé (ppk au lieu de pem).

Dans notre cas, il s’agissait d’un problème d’autorisations de fichier pour allowed_keys sur le dossier de l’utilisateur du serveur. Ce doit être -rw-r - r-- ... C'était -rw-rw-r--

SSH est très pointilleux sur les permanentes de fichiers.

Sharad
la source
Merci de m'avoir orienté dans la bonne direction. Dans notre cas, le propriétaire et les autorisations étaient erronés.
Zsolti
Comment changer les permissions de fichiers car nous ne pouvons pas accéder via ssh? un autre moyen de le faire?
Jeudi
1
Le mien était aussi un problème de propriété, groupement et autorisations. Comme indiqué ici ( stackoverflow.com/a/36808935/384670 ), les autorisations que je devais utiliser étaient 600 pour le fichier et 700 pour le répertoire. J'ai également changé le propriétaire et le groupe pour cet utilisateur non root en question.
M Katz
5

Résolu:

  1. Vous devez télécharger le puttyGEN et générer une clé publique et une clé privée.
  2. J'ai assigné un mot de passe à ma clé privée.
  3. puis configurez la clé privée en mastic. Putty-> SSH-> Auth-> Naviguez jusqu'à votre privé.
  4. Assurez-vous que vous avez le même chemin pour les clés privées et publiques.
  5. Vous devez configurer la clé publique sur le serveur. (Dans mon cas, j'ai parlé au serveur et lui ai demandé s'il pouvait ajouter ma clé publique au serveur). Vous avez besoin de la clé publique de l'autre côté (serveur) de la connexion.
Matt.sinner
la source
2
"Assurez-vous que vous avez le même chemin pour les clés privées et publiques." Ceci n'a rien à faire avec ça. Vous n'êtes pas obligé de résider votre clé publique à côté de votre clé privée.
user3790897
5

Dans mon cas, la raison était que le fichier de clé privée (.ppk) avait été supprimé dans l'agent d'authentification Putty, à savoir Pageant. Je viens juste de le mettre à jour à nouveau sur Pageant et la connexion a parfaitement fonctionné par la suite.

Marko H
la source