Je rencontre des problèmes lors de l'utilisation de clés autorisées pour la connexion SSH à un serveur distant. Les messages d'erreur que je reçois ressemblent à ceci:
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host
D'autres questions sur ce site ont posté des questions similaires, et la solution était généralement de revérifier toutes les autorisations côté client, ce que j'ai fait:
drwxr-xr-x+ 23 bfenker staff 782 May 8 11:02 bfenker
drwx------ 8 bfenker staff 272 May 8 10:05 .ssh
-rw------- 1 bfenker staff 1675 May 8 09:51 id_rsa
-rw-r--r-- 1 bfenker staff 418 May 8 09:51 id_rsa.pub
-rw------- 1 bfenker staff 999 May 8 09:46 identity
-rw-r--r-- 1 bfenker staff 663 May 8 09:46 identity.pub
-rw-r--r-- 1 bfenker staff 416 May 8 09:06 known_hosts
Je peux utiliser la clé autorisée pour SSH dans un autre serveur et de ce serveur SSH dans le serveur que je veux. Il s'agit d'une solution de contournement passable que j'essaie de résoudre, mais je pense que cela montre également que mon client et le serveur sont correctement configurés.
Notez que lorsque je SSH réussit dans un autre serveur, je reçois les mêmes messages d'erreur, mais il semble récupérer en commençant par les lignes:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
Est-ce que quelqu'un sait pourquoi cela fonctionne dans certains cas mais pas dans le cas où je veux? Toute autre suggestion serait très appréciée!
/etc/hosts.allow
et les/etc/hosts.deny
fichiers?Réponses:
Nécroquestion! Basé sur le fait que vous pouvez utiliser cette clé pour vous connecter à un autre serveur @ michael-hampton est sur la bonne piste: il y a quelque chose (pare-feu / wrappers tcp / config sshd) sur le serveur de destination qui refuse l'accès. Tout ce discours sur les formats de clé incorrects est un hareng rouge basé sur une interprétation incorrecte des informations de débogage. La ligne
indique que ssh a pu comprendre la clé.
la source
Votre clé SSH est stockée dans le mauvais format. OpenSSH utilise des clés qui sont mises sur une seule ligne. Vous avez besoin
ssh-keygen
avec-i
et-m
options, voirman ssh-keygen
. Probablement l'un d'entre eux:Utilisez la sortie comme nouveau fichier clé (
ssh-keygen ... >newkeyfile
).Modifier 1:
Veuillez noter ceci: "Cette option lira un fichier de clé privée (ou publique) non chiffré "
Donc, probablement le fichier doit être changé en un sans phrase secrète par un programme qui comprend ce format.
la source
-m
option, et essayer sans l'-m
option me donne cette erreur:buffer_get_string_ret: bad string length 813827235
key_from_blob: can't read key type
decode blob failed.
putty
sous Windows. Mais le mastic est si agréable d'offrir très commodément les deux formats ... (au moins pour les clés publiques)buffer_get_string_ret: bad string length 813827235
La première ligne de mon fichier de clés est-----BEGIN RSA PRIVATE KEY-----
et à partir de la ligne suivante est une longue liste de caractères alphanumériques. @Hauke LagingVous devez d'abord vérifier vos journaux sshd. c'est à dire
Selon le fichier de distribution Unix avec le journal de sécurité peut différer. Mais lorsque vous trouvez si, cela devrait indiquer la raison pour laquelle vous ne pouvez pas vous connecter.
la source
J'ai également rencontré ce problème récemment. Dans mon cas, toutes les autorisations étaient correctes, y compris .ssh, le fichier rsa, le répertoire personnel et tout ce qui concerne l'utilisateur. Le problème était que j'avais une clé publique précédemment générée dans .ssh qui ne correspondait pas à la clé privée que j'utilisais pour la connexion. La suppression de la clé publique de .ssh a résolu le problème.
J'utilisais ssh-keygen pour créer le répertoire .ssh qui a abouti à cette clé de pub et donc au problème.
la source
J'ai l'impression que les réponses ici ne sont pas très claires. La réponse de Mark Wagner le couvre, mais n'explique pas complètement la situation.
Les lignes dans la sortie sont préfixées avec leurs niveaux de débogage, ce qui donne également une indication de leur signification: mais les nombres inférieurs sont plus significatifs. Le
debug3:
truc est beaucoup moins important quedebug1:
Lorsque le fichier de clé est lu, ssh essaie d'abord de l'analyser en tant que clé RSA obsolète (maintenant appelée "RSA1"), ces clés commencent par
SSH PRIVATE KEY FILE FORMAT
et un numéro de version. Les nouvelles clés RSA démarrent toutes-----BEGIN RSA PRIVATE KEY-----
. Voici une tentative de connexion où seidentity
trouve une ancienne clé de style RSA1 etid_rsa
un nouveau style.À ce stade, il a identifié les types de clés dans les fichiers au
identity
furtype 0
et àid_rsa
mesuretype 1
. Les autres fichiers qu'il vérifie n'existent pas et le sont donctype -1
.Comme il s'agit du protocole 2, la clé RSA du protocole 1
identity
sera ignorée pendant l'échange de clés.Ici, il nous rappelle les fichiers clés qu'il souhaite utiliser. Vous ne savez pas pourquoi il n'a pas rejeté les fichiers manquants, uniquement le fichier de protocole 1, mais ...
Et ici, il offre la
id_rsa
clé et il est accepté.Donc, en bref, le problème dans le titre de la question est un hareng rouge qui vient de ssh essayant plusieurs façons d'analyser les clés qu'il trouve, pas un vrai problème avec une clé.
la source
J'ai eu le même problème sur mon MacBook Pro avec MacOS 10.7.5. Il n'y avait rien de mal avec mes clés, c'est juste qu'elles sont cryptées (avec une phrase secrète, comme vous êtes censé le faire) et n'étaient pas décryptées par ssh correctement. Il semble que cela
ssh-agent
pose problème.Selon cet article , essayez ceci:
Mettez
/usr/bin/ssh-agent
vos éléments de connexion (Préférences Système -> Utilisateurs et groupes -> sélectionnez l'utilisateur -> Éléments de connexion). Il est extrêmement difficile de naviguer/usr/bin
dans la boîte de dialogue, donc l'article suggère de créer un lien dans votre répertoire personnel (ln -s /usr/bin/ssh-agent
) que vous pouvez supprimer une fois que vous l'avez placé dans les éléments de connexion.Quittez Terminal.app
Redémarrez la machine.
Ouvrez Terminal et réessayez votre commande ssh.
A fonctionné pour moi (au moins, il a une fois).
la source