SSH wird mit zu vielen Authentifizierungsfehlern abgebrochen


26

Ich versuche, dieses einfache Bereitstellungsskript auszuführen, aber beim Ausführen vagrant upund dann bei vagrant provisionBefehlen treten Fehler auf .

Ich habe gelesen, dass ich eine /etc/ansible/hostsDatei erstellen musste , die ich erstellt habe.

[vagrant]
192.168.222.111

Meine SSH-Konfiguration (einige Details entfernt):

Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/ashleyconnor/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL

Host            server
HostName        XXX.XXX.XXX.XXX
User            ash
PreferredAuthentications publickey
IdentityFile    ~/.ssh/ash_ovh

Host            deployer
HostName        XXX.XXX.XXX.XXX
User            deployer
PreferredAuthentications publickey
IdentityFile    ~/.ssh/deployer_ovh

Host            bitbucket.org
PreferredAuthentications publickey
IdentityFile    ~/.ssh/bitbucket

Host            github.com
PreferredAuthentications publickey
IdentityFile    ~/.ssh/github

Host            staging
HostName        192.168.56.10
User            deployer
PreferredAuthentications publickey
IdentityFile    ~/.ssh/id_rsa

Die SSH-Ausgabe, die ich erhalte, scheint alle meine Schlüssel zu durchlaufen:

<192.168.222.111> ESTABLISH CONNECTION FOR USER: vagrant
<192.168.222.111> REMOTE_MODULE setup
<192.168.222.111> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/Users/ashleyconnor/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'IdentityFile=/Users/ashleyconnor/.vagrant.d/insecure_private_key', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=vagrant', '-o', 'ConnectTimeout=10', '192.168.222.111', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061 && echo $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061'"]
fatal: [192.168.222.111] => SSH encountered an unknown error. The output was:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/ashleyconnor/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/ashleyconnor/.ansible/cp/ansible-ssh-192.168.222.111-22-vagrant" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.222.111 [192.168.222.111] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug3: timeout: 10000 ms remain after connect
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/ashleyconnor/.vagrant.d/insecure_private_key" as a RSA1 public key
debug1: identity file /Users/ashleyconnor/.vagrant.d/insecure_private_key type -1
debug1: identity file /Users/ashleyconnor/.vagrant.d/insecure_private_key-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH_5*
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "192.168.222.111" from file "/Users/ashleyconnor/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/ashleyconnor/.ssh/known_hosts:20
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: zlib@openssh.com,zlib,none
debug2: kex_parse_kexinit: zlib@openssh.com,zlib,none
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 zlib@openssh.com
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 119/256
debug2: bits set: 527/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
debug3: load_hostkeys: loading entries for host "192.168.222.111" from file "/Users/ashleyconnor/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/ashleyconnor/.ssh/known_hosts:20
debug3: load_hostkeys: loaded 1 keys
debug1: Host '192.168.222.111' is known and matches the RSA host key.
debug1: Found key in /Users/ashleyconnor/.ssh/known_hosts:20
debug2: bits set: 511/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /Users/ashleyconnor/.ssh/id_rsa (0x7fc212600540),
debug2: key: /Users/ashleyconnor/.ssh/bitbucket (0x7fc212600730),
debug2: key: /Users/ashleyconnor/.ssh/deployer (0x7fc212600a00),
debug2: key: /Users/ashleyconnor/.ssh/github (0x7fc212600c80),
debug2: key: /Users/ashleyconnor/.ssh/ash_ovh (0x7fc212601010),
debug2: key: /Users/ashleyconnor/.ssh/deployer_ovh (0x7fc2126011e0),
debug2: key: /Users/ashleyconnor/.vagrant.d/insecure_private_key (0x0), explicit
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey
debug3: authmethod_lookup publickey
debug3: remaining preferred: ,gssapi-keyex,hostbased,publickey
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/bitbucket
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/deployer
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/github
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/ash_ovh
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/deployer_ovh
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Received disconnect from 192.168.222.111: 2: Too many authentication failures for vagrant

Der vagrant sshBefehl funktioniert gut.



Etwas anders. Vagrant injiziert den Schlüssel, wenn Sie ausführen, vagrant sshund diese Frage betraf nur die schlüssellose Authentifizierung.
Asche

2
Hinzufügen einer Notiz für andere Personen Googeln Sie dies. Cisco Nexus-Switches leiden unter demselben Problem. Auf die gleiche Weise gelöst, wie von @HenkLangeveld unten ausgeführt:IdentitiesOnly=yes
Brett Lykins,

Antworten:


37

Laut ssh-config(5)ssh werden immer alle dem Agenten bekannten Schlüssel zusätzlich zu den Identitätsdateien geprüft:

 IdentitiesOnly
         Specifies that ssh(1) should only use the authentication identity files
         configured in the ssh_config files, even if ssh-agent(1) offers more
         identities.  The argument to this keyword must be “yes” or “no”.  This
         option is intended for situations where ssh-agent offers many different
         identities.  The default is “no”.

 IdentityFile
         Specifies a file from which the user's DSA, ECDSA or DSA authentication
         identity is read.  The default is ~/.ssh/identity for protocol version 1,
         and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol
         version 2.  Additionally, any identities represented by the  
         authentication agent will be used for authentication.  ssh(1) will try
         to load certificate information from the filename obtained by
         appending -cert.pub to the path of a specified IdentityFile.

Um dies zu verhindern, muss IdentitiesOnly=yeszusätzlich zum explizit angegebenen privaten Schlüssel angegeben werden.

Führen Sie beispielsweise den folgenden sshBefehl aus:

$ ssh -i /home/henk/.vagrant.d/insecure_private_key \
  vagrant@192.168.222.111 echo ok

produziert:

Received disconnect from 192.168.222.111: 2: Too many authentication 
failures for vagrant

Führen Sie jedoch denselben sshBefehl aus und geben Sie zusätzlich Folgendes an IdentitiesOnly=yes:

$ ssh -o IdentitiesOnly=yes \
  -i /home/henk/.vagrant.d/insecure_private_key vagrant@192.168.222.111 echo ok

produziert:

ok

Bearbeiten: Die falsche Annahme, dass der vagabundierende Schlüssel dem Agenten hinzugefügt werden muss, wurde entfernt. Dies reduziert die Antwort auf das Wesentliche. Mal sehen, ob wir ein Duplikat finden können ...
Henk Langeveld

3
Danke für die Erklärung! Bei Verwendung einer .ssh/configDatei befindet sich die Syntax IdentitiesOnly yesin den entsprechenden HostAbschnitten.
Davil

Richtig, ssh -o Option=Valuewird Option Valuein der Konfigurationsdatei.
Henk Langeveld

Verzeihen Sie, wenn die Frage zu einfach ist, aber "IdentitiesOnly = yes" auf der Serverseite oder ein Argument, das vom Client übergeben werden muss? Es sieht aus wie die zweite ..
RollRoll

@ThePoet Tatsächlich wurde es als sshClient-Option erwähnt.
Henk Langeveld

8

Also hatte ich 5 Schlüssel in meinem ssh-agentund trotz der expliziten Option, den vagabunden ssh-Schlüssel zu verwenden, bestand es immer noch darauf, die Schlüssel in meinem Agenten zu durchlaufen, bevor ich bequem max_tries erreichte, bevor ich zum richtigen Schlüssel kam.

So überprüfen Sie, ssh-add -lob dieses Problem vorliegt: Ausführen - Wenn diese Liste größer als 5 ist, müssen Sie Schlüssel entfernen oder den Agenten deaktivieren.

So beheben Sie das Problem: Führen Sie aus, ssh-add -d ~/.ssh/Xwo Xsich der Schlüssel befindet, den Sie entfernen möchten.


Nach der Installation des Repos von mazer-rackham und mit diesen Informationen konnte ich Ihr Problem reproduzieren und habe eine Alternative hinzugefügt: Stellen Sie sicher, dass der Agent den vagabundierenden Schlüssel kennt.
Henk Langeveld

Ich habe es dem Agenten hinzugefügt, musste aber noch Schlüssel entfernen. Vielleicht ist die Reihenfolge, die Sie dem Agenten hinzufügen, von Bedeutung? BEARBEITEN: Lesen Sie einfach Ihre Bearbeitung.
Asche

Ich habe das gleiche Problem, aber ich verstehe nicht, wie Sie das behoben haben? Ich kann keinen der Schlüssel aus meinem ~/.ssh/Ordner entfernen , ich brauche dann
rubo77

Sie entfernen die Schlüssel nicht aus Ihrem ~.sshOrdner - Sie entfernen die Schlüssel aus der ssh-agent daemon. Sie können sie später jederzeit wieder hinzufügen. Sehen Sie hier für weitere Informationen.
Ash

4

Nachdem ich alle Ratschläge hier erfolglos ausprobiert hatte, stellte ich fest, dass mein Problem die neue Authentifizierungsmethode (GSSAPI) war, die immer erfolglos blieb.

Ich habe das durch Bearbeiten der ~/.ssh/configDatei gelöst :

Host *
  GSSAPIAuthentication no

Hoffe das hilft auch jemandem.


Das scheint mindestens einen Slot zu machen! Mein Setup mit 5 Schlüsseln via ssh-agent funktioniert wieder. Ich denke, es wird mit 6 Tasten scheitern ...
Robert Siemer

2

Ihr ssh-Agent verfügt über mehr Schlüssel, als der ssh-Server für Authentifizierungsversuche zulässt ("MaxAuthTries", Standard: 6).

Beachten Sie, dass einige ssh-Agenten, insbesondere der GNOME-Schlüsselring, alle Schlüssel, die sie in ~ / .ssh finden, automatisch laden und dass diese Schlüssel nicht mit "ssh-add - [dD]" entladen werden können.

Hier sind einige Lösungen:

  • Sie haben bereits den richtigen Schlüssel in Ihrer ~ / .ssh / config konfiguriert, sodass Sie den Agenten nicht benötigen. unset SSH_AUTH_SOCKLassen Sie den Client den Agenten ignorieren, oder verwenden Sie "IdentitiesOnly = yes", wie von @ henk-langeveld vorgeschlagen
  • Verschieben Sie einige Schlüssel aus ~ / .ssh (ein Unterverzeichnis wie ~ / .ssh / noauto funktioniert auch), um zu verhindern, dass sie automatisch geladen werden. Sie können sie weiterhin manuell hinzufügen, wenn Sie sie benötigen.
  • Erhöhen Sie "MaxAuthTries" auf der Serverseite die Anzahl der zulässigen Authentifizierungsversuche

2

Um dies zu verhindern, können wir ssh mit -o 'IdentitiesOnly yes'zBssh -i privateKey -o 'IdentitiesOnly yes' user@host

Alternativ können wir die folgenden Zeilen zur Datei ~ / .ssh / config hinzufügen

Host *
IdentitiesOnly yes

1

So stellen Sie eine Verbindung zum Server mithilfe des Befehls "Schnellkorrektur" her:

ssh -o IdentitiesOnly=yes -i ~/.ssh/private_key_or_pem_file_name server_user_name@ip_OR_hostname echo ok

Der empfohlene Weg wird unten erwähnt:

Aber wenn Sie Capistrano-Rezepte oder andere Software haben, die Ihren SSH-Server verbinden, müssen Sie die Fehler wie unten beschrieben beheben:

In ~ / .ssh / config - Datei erwähnt "IdentitiesOnly ja" Option in der Serverkonfiguration

Host server_domain_OR_ip server_name_your_choice
    User server_user_name
    Hostname server_domain_OR_ip
    RSAAuthentication yes
    Compression yes
    IdentityFile ~/.ssh/private_key_OR_pem_file
    IdentitiesOnly yes
    Port 22

private_key_OR_pem_file: Im Falle einer PEM-Datei wird auch die Erweiterung ".pem" erwähnt


1

Ich bin auf denselben Fehler gestoßen, als ich versucht habe, ein ansibles Playbook auszuführen. Am Ende lieferte ich die Option IdentitiesOnly ssh mit --ssh-extra-args:

ansible-playbook -i ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml --ssh-extra-args="-o IdentitiesOnly=yes"

0

Schlüsselbotschaft ist

Received disconnect from 192.168.222.111: 2: 
    Too many authentication failures for vagrant

Sie haben die vagrant ssh-config-Ausgabe als Standardhost kopiert .ssh/config, dies wird jedoch übersprungen, da widersprüchliche Parameter (Hostname, Port) vorliegen. Wenn kein passender Eintrag vorhanden ist, probiert ssh einfach alle Schlüssel aus, die es finden kann.

Testen Sie den SSH-Versuch erneut mit der -iOption

$ ssh -i $HOME/.vagrant.d/insecure_private_key vagrant@192.168.222.111 echo ok

Ich glaube, so würden Sie dies im Ansible-Inventar angeben:

[vagrant]
192.168.222.111 ansible_ssh_private_key_file=/.../.vagrant.d/insecure_private_key

Pfad für Lesbarkeit abgekürzt


Ursprüngliche Antwort:

Vergleichen Sie die Ausgabe von vagrant ssh-configmit dem vagabundierenden Eintrag in Ihrem .ssh/config. Stellen Sie sicher, dass der Pfad des privaten Schlüssels genau übereinstimmt.

Stellen Sie außerdem sicher, dass keine anderen Konten auf die Schlüsseldatei zugreifen können. Wir alle wissen, was dieser Schlüssel ist, aber SSH weiß nicht, dass dies öffentlich bekannt ist, und versucht, uns vor der Verwendung von Schlüsseln zu schützen, die möglicherweise kompromittiert sind.


Ich habe die Konfiguration ursprünglich von kopiert, vagrant ssh-configaber ich habe sie erneut überprüft und sie ist identisch. Ich kann auch cat /Users/ashleyconnor/.vagrant.d/insecure_private_keyund habe ausreichende Berechtigungen.
Asche

Stellen Sie sicher, dass niemand anderes die Datei lesen oder schreiben kann.
Henk Langeveld

1
Nur ich habe RW-Berechtigungen. Kein Glück bei den anderen Vorschlägen, ich habe versucht ssh -i $HOME/.vagrant.d/insecure_private_key -l vagrant 192.168.222.111immer noch zu rennenReceived disconnect from 192.168.123.123: 2: Too many authentication failures for vagrant
Aschermärz

Hat der Remote-Host einen Benutzer vagrant?
Henk Langeveld

Ja. Wenn ich vagrant sshes starte verbindet sich als Benutzer Vagrant
Ash
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.