인증 실패가 너무 많아 SSH가 중단됨


26

나는이 간단한 실행하려고하고있어 프로비저닝 스크립트를 하지만 난 실행할 때 오류가 발생하고있어 vagrant up다음과 vagrant provision명령.

내가 한 /etc/ansible/hosts파일 을 만들어서 채워야한다는 것을 읽었습니다 .

[vagrant]
192.168.222.111

내 SSH 구성 (일부 세부 사항 제거) :

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

내가 받고있는 SSH 출력은 모든 키를 통해 변동되는 것 같습니다.

<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

vagrant ssh명령은 잘 작동합니다.



약간 다른. Vagrant는 실행할 때 키를 주입 하며이 vagrant ssh질문에는 키가없는 인증 만 포함됩니다.
Ash

2
다른 사람을위한 메모 추가 Cisco Nexus 스위치에도 이와 같은 문제가 있습니다. : 아래 @HenkLangeveld 지적과 같은 방법으로 해결IdentitiesOnly=yes
브렛 Lykins

답변:


37

에 따르면 ssh-config(5)ssh는 ID 파일 외에 에이전트가 알고있는 모든 키 를 항상 시도 합니다 .

 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.

이를 방지하려면 IdentitiesOnly=yes명시 적으로 제공된 개인 키 외에 추가로 지정해야합니다 .

예를 들어, ssh아래 명령을 실행하십시오 .

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

생산 :

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

그러나 동일한 ssh명령을 실행하고 IdentitiesOnly=yes다음을 지정하십시오 .

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

생산 :

ok

편집 : 에이전트에 방랑 키를 추가해야한다는 잘못된 가정을 제거했습니다. 이것은 본질에 대한 답변을 줄입니다. 우리가 중복을 찾을 수 있는지 보자 ...
Henk Langeveld

3
설명 주셔서 감사합니다! .ssh/config파일을 사용할 때 구문은 IdentitiesOnly yes해당 Host섹션에 있습니다.
davil

정답은, ssh -o Option=Value이된다 Option Valueconfig 파일에서.
Henk Langeveld

질문이 너무 기본이지만 서버 측에서 "IdentitiesOnly = yes"입니까 아니면 클라이언트에서 전달할 인수입니까? 두 번째처럼 보입니다 ..
RollRoll

@ThePoet 실제로 ssh클라이언트 옵션 으로 언급했습니다 .
Henk Langeveld

8

그래서 나는 5 개의 키를 가지고 있었고 ssh-agent방랑 한 ssh 키를 사용하는 명시 적 옵션에도 불구하고 올바른 키에 도달하기 전에 max_tries에 편리하게 도달하기 전에 에이전트의 키를 반복 루핑해야한다고 주장했습니다.

이 문제점이 있는지 확인하려면 다음을 수행하십시오. 실행 ssh-add -l-이 목록이> 5 인 경우 키를 제거하거나 에이전트를 사용 안함으로 설정해야합니다.

수정하려면 : 제거하려는 키가있는 ssh-add -d ~/.ssh/X위치를 실행 X하십시오.


mazer-rackham 리포지토리와이 정보를 설치 한 후 문제를 재현 할 수 있으며 대안을 추가했습니다. 에이전트가 vagrant key를 알고 있는지 확인하십시오.
Henk Langeveld

에이전트에 추가했지만 여전히 키를 제거해야했습니다. 상담원에게 추가 한 주문이 중요할까요? 편집 : 편집 내용을 읽으십시오.
Ash

나는 같은 문제가 있지만 어떻게 고쳤는지 이해하지 못합니까? ~/.ssh/폴더 에서 키를 제거 할 수 없습니다. 그런 다음 필요합니다
rubo77

~.ssh폴더 에서 키를 제거하지 않고 -에서 키를 제거하고 ssh-agent daemon있습니다. 나중에 언제든지 다시 추가 할 수 있습니다. 자세한 내용은 여기 를 참조 하십시오 .
Ash

4

성공하지 못한 채 여기에서 모든 조언을 시도한 후, 내 문제는 항상 실패한 새로운 인증 방법 (GSSAPI)이라는 것을 알았습니다.

~/.ssh/config파일 을 편집 하여이 문제를 해결했습니다 .

Host *
  GSSAPIAuthentication no

이것이 누군가에게도 도움이되기를 바랍니다.


이것은 적어도 하나의 슬롯을 구성하는 것 같습니다! ssh-agent를 통한 5 개의 키 설정이 다시 작동합니다. 그래도 6 개의 키로 실패 할 것 같습니다 ...
Robert Siemer

2

ssh-agent는 ssh 서버가 인증 시도를 허용하는 것보다 더 많은 키를 보유합니다 ( "MaxAuthTries", 기본값 : 6).

일부 ssh 에이전트, 특히 그놈 키링은 ~ / .ssh에서 찾은 모든 키를 자동으로로드하며 이러한 키는 "ssh-add-[dD]"로 언로드 할 수 없습니다.

해결책은 다음과 같습니다.

  • ~ / .ssh / config에서 올바른 키를 이미 구성 했으므로 에이전트가 필요하지 않습니다. 클라이언트가 에이전트를 무시하도록하십시오 (예 : unset SSH_AUTH_SOCK@ henk-langeveld가 제안한대로 "IdentitiesOnly = yes"사용).
  • 키가 자동로드되지 않도록 ~ / .ssh (~ / .ssh / noauto와 같은 하위 디렉토리도 작동)에서 일부 키를 이동하십시오. 필요한 경우 수동으로 ssh-add 할 수 있습니다.
  • 허용 된 인증 시도 횟수, 서버 측에서 "MaxAuthTries"증가

2

이를 방지하기 위해, 우리는 사용하여 ssh를 할 수 있습니다 -o 'IdentitiesOnly yes'예를 들어,ssh -i privateKey -o 'IdentitiesOnly yes' user@host

또는 ~ / .ssh / config 파일에 다음 줄을 추가 할 수 있습니다

Host *
IdentitiesOnly yes

1

빠른 수정 명령을 사용하여 서버를 연결하려면 다음을 수행하십시오.

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

권장 방법은 다음과 같습니다.

그러나 ssh 서버를 연결하는 capistrano 영수증 또는 기타 소프트웨어가있는 경우 아래에 언급 된대로 올바른 방식으로 수정해야합니다.

~ / 스푸핑 / 구성 서버 구성 파일 언급 "IdentitiesOnly 예"옵션

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 : pem 파일에서 확장자가 너무 ".pem"인 경우


1

놀라운 플레이 북을 실행하는 동안이 같은 오류가 발생했습니다. 나는 --ssh-extra-args다음을 사용하여 IdentitiesOnly ssh 옵션을 제공했습니다 .

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

0

주요 메시지는

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

vagrant ssh-config 출력을 기본 호스트로 복사 .ssh/config했지만 충돌하는 매개 변수 (hostname, port)가 있으므로 건너 뜁니다. 일치하는 항목이 없으면 ssh는 찾을 수있는 모든 키를 시도합니다.

-i옵션으로 ssh 시도를 다시 테스트하십시오.

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

이것이 Ansible Inventory에서 이것을 지정하는 방법이라고 생각합니다.

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

가독성을위한 경로 약자


원래 답변 :

의 출력 vagrant ssh-config항목과의 항목을 비교 하십시오 .ssh/config. 개인 키 경로가 정확히 일치하는지 확인하십시오.

또한 다른 계정으로 키 파일에 액세스 할 수없는지도 확인하십시오. 우리는 모두 그 키가 무엇인지 알고 있지만 SSH는이 것이 공개 지식이라는 것을 알지 못하고 손상 될 수있는 키를 사용하지 못하도록 보호하려고합니다.


원래 구성을 복사 vagrant ssh-config했지만 다시 확인했는데 동일합니다. 또한 cat /Users/ashleyconnor/.vagrant.d/insecure_private_key적절한 권한을 가질 수 있습니다 .
Ash

다른 사람이 파일을 읽거나 쓸 수 없도록하십시오.
Henk Langeveld

1
rw 권한 만 있습니다. 다른 제안들에 대해서는 운이 없다. 나는 ssh -i $HOME/.vagrant.d/insecure_private_key -l vagrant 192.168.222.111여전히 계속 달리기를 시도했다Received disconnect from 192.168.123.123: 2: Too many authentication failures for vagrant
Ash

원격 호스트에 사용자가 vagrant있습니까?
Henk Langeveld

예. 내가 그것을 실행할 때 vagrant ssh그것은 사용자 vagrant로 연결
Ash
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.