SSH si interrompe con troppi errori di autenticazione


26

Sto tentando di eseguire questo semplice script di provisioning ma sto riscontrando errori durante l'esecuzione vagrant upe quindi i vagrant provisioncomandi.

Ho letto che dovevo creare un /etc/ansible/hostsfile che ho fatto, popolandolo con:

[vagrant]
192.168.222.111

La mia configurazione SSH (alcuni dettagli rimossi):

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

L'uscita SSH che sto ricevendo sembra sfornare tutte le mie chiavi:

<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

Il vagrant sshcomando funziona bene.



Leggermente diverso. Vagrant inietta la chiave quando si esegue vagrant sshe questa domanda riguardava solo l'autenticazione senza chiave.
Ash,

2
Aggiunta di una nota per altre persone Google. Gli switch Cisco Nexus soffrono di questo stesso problema. Risolto come indicato da @HenkLangeveld di seguito:IdentitiesOnly=yes
Brett Lykins

Risposte:


37

Secondo ssh-config(5), ssh proverà sempre tutte le chiavi conosciute dall'agente oltre a qualsiasi file di identità:

 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.

Per evitare ciò, è necessario specificare IdentitiesOnly=yesoltre alla chiave privata fornita in modo esplicito.

Ad esempio, eseguendo il sshcomando seguente:

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

produce:

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

Tuttavia, eseguendo lo stesso sshcomando e, inoltre, specificando IdentitiesOnly=yes:

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

produce:

ok

Modifica: rimossa un'ipotesi errata sulla necessità di aggiungere la chiave vagabonda all'agente. Ciò riduce la risposta alla sua essenza. Vediamo se riusciamo a trovare un duplicato ...
Henk Langeveld

3
Grazie per la spiegazione! Quando si utilizza un .ssh/configfile, la sintassi è IdentitiesOnly yesnelle Hostsezioni appropriate .
David,

Corretto, ssh -o Option=Valuediventa Option Valuenel file di configurazione.
Henk Langeveld,

perdona se la domanda è troppo semplice, ma "IdentitiesOnly = yes" sul lato server o un argomento da passare dal client? Sembra il secondo ..
RollRoll

@ThePoet In effetti, l'ho menzionato come sshopzione client.
Henk Langeveld,

8

Quindi avevo 5 chiavi nella mia ssh-agente nonostante l'opzione esplicita di usare la chiave ssh del vagabondo, continuava a insistere per scorrere le chiavi nel mio agente prima di raggiungere comodamente max_tries prima di arrivare alla chiave giusta.

Per verificare la presenza di questo problema: Esegui ssh-add -l: se l'elenco è> 5, è necessario rimuovere le chiavi o disabilitare l'agente.

Per risolvere: eseguire ssh-add -d ~/.ssh/Xdove si Xtrova la chiave che si desidera rimuovere.


Dopo aver installato il repository mazer-rackham e con queste informazioni ho potuto riprodurre il problema e ho aggiunto un'alternativa: assicurarsi che la chiave vagabonda sia nota all'agente.
Henk Langeveld

L'ho aggiunto all'agente ma ho comunque dovuto rimuovere le chiavi. Forse l'ordine che aggiungi all'agente è importante? EDIT: basta leggere la tua modifica.
Ash,

Ho lo stesso problema, ma non capisco come hai risolto questo problema? Non riesco a rimuovere nessuna delle chiavi dalla mia ~/.ssh/cartella, mi serve quindi
rubo77

Non stai rimuovendo le chiavi dalla tua ~.sshcartella - stai rimuovendo le chiavi da ssh-agent daemon. Puoi sempre aggiungerli più tardi. Vedi qui per maggiori informazioni.
Ash,

4

Dopo aver provato tutti i consigli qui senza successo, ho riconosciuto che il mio problema era il nuovo metodo di autenticazione (GSSAPI), che non ha mai avuto successo.

Ho risolto questo problema modificando il ~/.ssh/configfile:

Host *
  GSSAPIAuthentication no

Spero che questo aiuti anche qualcuno.


Questo sembra costituire almeno uno slot! La mia configurazione con 5 tasti tramite ssh-agent funziona di nuovo. Immagino che fallirà con 6 chiavi, però ...
Robert Siemer il

2

Il tuo agente ssh ha più chiavi di quante il server ssh consenta tentativi di autenticazione ("MaxAuthTries", impostazione predefinita: 6).

Nota che alcuni agenti ssh, in particolare il portachiavi GNOME, caricano automaticamente tutte le chiavi che trovano in ~ / .ssh e che queste chiavi non possono essere scaricate con "ssh-add - [dD]".

Ecco alcune soluzioni:

  • Hai già configurato la chiave corretta nel tuo ~ / .ssh / config, quindi non hai bisogno dell'agente. Fai in modo che il client ignori l'agente, ad esempio unset SSH_AUTH_SOCKo usa "IdentitiesOnly = yes" come suggerito da @ henk-langeveld
  • Sposta alcuni tasti fuori da ~ / .ssh (funziona anche un sottodirectory come ~ / .ssh / noauto) per impedire che vengano caricati automaticamente. Puoi ancora aggiungerli manualmente se ne hai bisogno.
  • Aumentare "MaxAuthTries" sul lato server, il numero di tentativi di autenticazione consentiti

2

Per evitare ciò, possiamo usare ssh usando -o 'IdentitiesOnly yes'ad esssh -i privateKey -o 'IdentitiesOnly yes' user@host

in alternativa, possiamo aggiungere le seguenti righe al file ~ / .ssh / config

Host *
IdentitiesOnly yes

1

Per connettere il server utilizzando il comando di correzione rapida:

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

Il modo consigliato è menzionato di seguito:

Ma se hai ricevute capistrano o altri software che stanno collegando il tuo server SSH, allora devi correggere nel modo corretto come indicato di seguito:

Nel file ~ / .ssh / config menzionare l'opzione "IdentitiesOnly yes" nella configurazione del server

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: nel caso di file pem anche menzionare l'estensione ".pem"


1

Ho riscontrato questo stesso errore durante il tentativo di eseguire un playbook sensibile. Ho finito per fornire l'opzione IdentityOnly ssh usando --ssh-extra-args:

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

0

Il messaggio chiave è

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

Hai copiato l'output di sagr-config vagrant come host predefinito .ssh/configma questo viene ignorato perché ha parametri in conflitto (nome host, porta). Senza alcuna voce corrispondente, ssh proverà semplicemente tutte le chiavi che riesce a trovare.

Prova di nuovo il tentativo ssh con l' -iopzione

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

Credo che sia così che lo specificheresti nell'inventario Ansible:

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

Abbreviato il percorso per la leggibilità


Risposta originale:

Confronta l'output di vagrant ssh-configcon la voce vagante nel tuo .ssh/config. Assicurarsi che il percorso della chiave privata corrisponda esattamente.

Verificare inoltre che non sia possibile accedere al file di chiavi da nessun altro account. Sappiamo tutti qual è quella chiave, ma SSH non sa che questa cosa è di dominio pubblico e cerca di proteggerci dall'uso di chiavi che potrebbero essere compromesse.


Inizialmente ho copiato la configurazione vagrant ssh-configma ho controllato di nuovo ed è identico. Posso anche cat /Users/ashleyconnor/.vagrant.d/insecure_private_keye avere autorizzazioni adeguate.
Ash,

Assicurarsi che nessun altro possa leggere o scrivere il file.
Henk Langeveld

1
Solo io ho i permessi rw. Nessuna fortuna sugli altri suggerimenti, ho provato a correre ssh -i $HOME/.vagrant.d/insecure_private_key -l vagrant 192.168.222.111ancora ottenendoReceived disconnect from 192.168.123.123: 2: Too many authentication failures for vagrant
Ash

L'host remoto ha un utente vagrant?
Henk Langeveld,

Sì. Quando lo eseguo vagrant sshsi collega come utente vagabondo
Ash
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.