SSH przerywa z powodu zbyt wielu błędów uwierzytelnienia

26

Próbuję uruchomić ten prosty skrypt obsługi administracyjnej, ale występują błędy podczas uruchamiania, vagrant upa następnie vagrant provisionpoleceń.

Przeczytałem, że muszę utworzyć /etc/ansible/hostsplik, który zrobiłem, wypełniając go:

[vagrant]
192.168.222.111

Moja konfiguracja SSH (niektóre szczegóły zostały usunięte):

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

Wydaje mi się, że wyjście SSH przechodzi przez wszystkie moje klucze:

<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: [email protected],[email protected],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: [email protected],[email protected],ssh-rsa,[email protected],[email protected],ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],zlib,none
debug2: kex_parse_kexinit: [email protected],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,[email protected]
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,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
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 [email protected]
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 [email protected]
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

vagrant sshKomenda działa dobrze.

Popiół
źródło
Możliwy duplikat: serverfault.com/questions/139870/…
Henk Langeveld
Trochę inny. Vagrant wstrzykuje swój klucz podczas uruchamiania, vagrant ssha to pytanie dotyczyło tylko uwierzytelnienia bezkluczykowego.
Ash
2
Dodanie notatki dla innych osób Googlowanie tego. Przełączniki Cisco Nexus mają ten sam problem. Rozwiązany w taki sam sposób, jak wskazał @HenkLangeveld poniżej:IdentitiesOnly=yes
Brett Lykins,

Odpowiedzi:

37

Zgodnie z ssh-config(5), ssh zawsze wypróbuje wszystkie klucze znane przez agenta oprócz wszystkich plików tożsamości:

 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.

Aby temu zapobiec, IdentitiesOnly=yesoprócz jawnie podanego klucza prywatnego należy określić .

Na przykład uruchomienie sshponiższej komendy:

$ ssh -i /home/henk/.vagrant.d/insecure_private_key \
  [email protected] echo ok

produkuje:

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

Jednak uruchomienie tej samej sshkomendy i dodatkowo określenie IdentitiesOnly=yes:

$ ssh -o IdentitiesOnly=yes \
  -i /home/henk/.vagrant.d/insecure_private_key [email protected] echo ok

produkuje:

ok
Henk Langeveld
źródło
Edycja: Usunięto nieprawidłowe założenie o konieczności dodania błędnego klucza do agenta. To redukuje odpowiedź do jej istoty. Zobaczmy, czy uda nam się znaleźć duplikat ...
Henk Langeveld
3
Dziękuję za wyjaśnienie! Podczas korzystania z .ssh/configpliku składnia znajduje się IdentitiesOnly yesw odpowiednich Hostsekcjach.
davil
Prawidłowo, ssh -o Option=Valuestaje się Option Valuew pliku konfiguracyjnym.
Henk Langeveld
wybacz, jeśli pytanie jest zbyt proste, ale czy „IdentitiesOnly = yes” po stronie serwera czy argument, który należy przekazać klientowi? Wygląda jak drugi ..
RollRoll,
@ThePoet Rzeczywiście, wspomniał o tym jako sshopcji klienta.
Henk Langeveld,
8

Miałem więc 5 kluczy ssh-agenti pomimo wyraźnej opcji użycia błędnego klucza ssh, nadal nalegałem na przechodzenie między kluczami w moim agencie, zanim wygodnie dotrzesz do max_tries, zanim dojdziesz do właściwego klucza.

Aby sprawdzić, czy masz ten problem: Uruchom ssh-add -l- jeśli ta lista ma> 5, musisz usunąć klucze lub wyłączyć agenta.

Aby naprawić: Uruchom ssh-add -d ~/.ssh/Xgdzie Xjest klucz, który chcesz usunąć.

Popiół
źródło
Po zainstalowaniu repozytorium mazer-rackham i po tych informacjach mogę odtworzyć twój problem i dodałem alternatywę: Upewnij się, że agent błędnie zna błędny klucz.
Henk Langeveld
Dodałem go do agenta, ale nadal musiałem usunąć klucze. Może ma znaczenie kolejność, którą dodajesz do agenta? EDYCJA: Po prostu przeczytaj swoją edycję.
Ash
Mam ten sam problem, ale nie rozumiem, jak to naprawiłeś? Nie mogę usunąć żadnego klucza z mojego ~/.ssh/folderu, potrzebuję wtedy
rubo77,
Nie usuwasz kluczy ze swojego ~.sshfolderu - usuwasz klucze z ssh-agent daemon. Zawsze możesz dodać je później. Zobacz tutaj, aby uzyskać więcej informacji.
Ash
4

Po wypróbowaniu wszystkich porad tutaj bez powodzenia, zrozumiałem, że moim problemem była nowa metoda uwierzytelniania (GSSAPI), która zawsze była nieudana.

Rozwiązałem to, edytując ~/.ssh/configplik:

Host *
  GSSAPIAuthentication no

Mam nadzieję, że to też komuś pomoże.

Piotr
źródło
To wydaje się stanowić co najmniej jedno miejsce! Moja konfiguracja z 5 kluczami za pośrednictwem ssh-agent znów działa. Myślę, że to się nie powiedzie z 6 kluczami, ale ...
Robert Siemer
2

Twój agent ssh posiada więcej kluczy niż serwer ssh pozwala na próby uwierzytelnienia („MaxAuthTries”, domyślnie: 6).

Zauważ, że niektórzy agenci ssh, w szczególności GNOME Keyring, automatycznie ładują wszystkie klucze znalezione w ~ / .ssh i że tych kluczy nie można wyładować za pomocą „ssh-add - [dD]”.

Oto kilka rozwiązań:

  • Prawidłowy klucz został już skonfigurowany w ~ / .ssh / config, więc nie potrzebujesz agenta. Spraw, aby klient zignorował agenta, np. unset SSH_AUTH_SOCKLub użyj „IdentitiesOnly = yes”, jak sugerował @ henk-langeveld
  • Przenieś niektóre klucze z ~ / .ssh (podkatalog taki jak ~ / .ssh / noauto również działa), aby zapobiec ich automatycznemu załadowaniu. Nadal możesz ręcznie dodać je ssh, jeśli ich potrzebujesz.
  • Zwiększ „MaxAuthTries” po stronie serwera, liczbę dozwolonych prób uwierzytelnienia
Nils Toedtmann
źródło
2

Aby temu zapobiec, możemy ssh używając -o 'IdentitiesOnly yes'npssh -i privateKey -o 'IdentitiesOnly yes' user@host

alternatywnie możemy dodać następujące wiersze do pliku ~ / .ssh / config

Host *
IdentitiesOnly yes
Jasodeep Chatterjee
źródło
1

Aby połączyć się z serwerem za pomocą polecenia szybkiej poprawki:

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

Zalecany sposób wymieniono poniżej:

Ale jeśli masz recepty capistrano lub inne oprogramowanie, które łączą twój serwer ssh, musisz to naprawić w odpowiedni sposób, jak wspomniano poniżej:

W pliku ~ / .ssh / config wspomnij o opcji „IdentitiesOnly yes” w konfiguracji serwera

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: W przypadku rozszerzenia pliku pem też wspomnij o rozszerzeniu „.pem”

Taimoor Changaiz
źródło
1

Wystąpił ten sam błąd podczas próby uruchomienia podręcznika ansible. W końcu dostarczyłem opcję ssh IdentitiesOnly, używając --ssh-extra-args:

ansible-playbook -i ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml --ssh-extra-args="-o IdentitiesOnly=yes"
strictlyk3v
źródło
0

Kluczowym przesłaniem jest

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

Skopiowałeś błędne wyjście ssh-config jako domyślnego hosta, .ssh/configale jest ono pomijane, ponieważ ma sprzeczne parametry (nazwa hosta, port). Bez pasującego wpisu ssh wypróbuje wszystkie klucze, jakie może znaleźć.

Przetestuj ponownie próbę ssh z -iopcją

$ ssh -i $HOME/.vagrant.d/insecure_private_key [email protected] echo ok

Sądzę, że tak określiłbyś to w Inwentarzu Ansible:

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

Skrócono ścieżkę dla czytelności


Oryginalna odpowiedź:

Porównaj wyniki vagrant ssh-configz błędnym wpisem w twoim .ssh/config. Upewnij się, że ścieżka klucza prywatnego jest dokładnie zgodna.

Sprawdź także, czy do pliku klucza nie mogą uzyskać dostępu żadne inne konta. Wszyscy wiemy, co to jest klucz, ale SSH nie wie, że to jest wiedza publiczna i próbuje nas chronić przed użyciem kluczy, które mogą zostać naruszone.

Henk Langeveld
źródło
Pierwotnie skopiowałem konfigurację, vagrant ssh-configale sprawdziłem ponownie i jest identyczna. Mogę również cat /Users/ashleyconnor/.vagrant.d/insecure_private_keyi mam odpowiednie uprawnienia.
Ash
Upewnij się, że nikt inny nie może odczytać ani zapisać pliku.
Henk Langeveld
1
Tylko ja mam uprawnienia rw. Brak powodzenia w przypadku innych sugestii, próbowałem ssh -i $HOME/.vagrant.d/insecure_private_key -l vagrant 192.168.222.111nadal biegaćReceived disconnect from 192.168.123.123: 2: Too many authentication failures for vagrant
Ash
Czy zdalny host ma użytkownika vagrant?
Henk Langeveld
Tak. Po uruchomieniu vagrant sshłączy się jako włóczęga użytkownika
Ash