SSH hủy bỏ với quá nhiều lỗi xác thực


26

Tôi đang cố chạy tập lệnh cung cấp đơn giản này nhưng tôi gặp phải lỗi khi chạy vagrant upvà sau đó vagrant provisionra lệnh.

Tôi đọc rằng tôi cần phải tạo một /etc/ansible/hoststệp mà tôi đã thực hiện, điền vào đó:

[vagrant]
192.168.222.111

Cấu hình SSH của tôi (một số chi tiết đã bị xóa):

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

Đầu ra SSH tôi nhận được dường như lướt qua tất cả các khóa của tôi:

<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

Các vagrant sshlệnh hoạt động tốt.



Hơi khác một chút. Vagrant tiêm khóa của nó khi bạn chạy vagrant sshvà câu hỏi này chỉ liên quan đến xác thực không cần chìa khóa.
Tro

2
Thêm một ghi chú cho người khác Googling này. Các thiết bị chuyển mạch Nexus của Cisco gặp phải vấn đề tương tự. Được giải quyết theo cách tương tự như được chỉ ra bởi @HenkLangeveld bên dưới:IdentitiesOnly=yes
Brett Lykins

Câu trả lời:


37

Theo ssh-config(5), ssh sẽ luôn thử tất cả các khóa được biết bởi tác nhân bên cạnh bất kỳ Tệp nhận dạng nào:

 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.

Để ngăn chặn điều này, người ta phải chỉ định IdentitiesOnly=yesngoài khóa riêng được cung cấp rõ ràng.

Ví dụ: chạy sshlệnh bên dưới:

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

sản xuất:

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

Tuy nhiên, chạy cùng một sshlệnh và, ngoài ra, chỉ định IdentitiesOnly=yes:

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

sản xuất:

ok

Chỉnh sửa: Đã xóa giả định không chính xác về việc cần thêm khóa vagrant cho tác nhân. Điều này làm giảm câu trả lời cho bản chất của nó. Hãy xem liệu chúng ta có thể tìm thấy một bản sao ...
Henk Langeveld

3
Cảm ơn đã giải thích! Khi sử dụng một .ssh/configtập tin, cú pháp nằm IdentitiesOnly yestrong các Hostphần thích hợp .
davil

Đúng, ssh -o Option=Valuetrở thành Option Valuetrong tập tin cấu hình.
Henk Langeveld

tha thứ nếu câu hỏi quá cơ bản, nhưng là "Danh tính duy nhất = có" ở phía máy chủ hoặc một đối số để truyền từ khách hàng? Nó trông giống như thứ hai ..
RollRoll

@ThePoet Thật vậy, đã đề cập đến nó như là một sshtùy chọn khách hàng.
Henk Langeveld

8

Vì vậy, tôi đã có 5 khóa trong mình ssh-agentvà mặc dù tùy chọn rõ ràng là sử dụng khóa ssh mơ hồ, nó vẫn khăng khăng lặp qua các phím trong đại lý của mình trước khi tiếp cận max_tries một cách thuận tiện trước khi đến đúng phím.

Để kiểm tra xem bạn có vấn đề này không: Chạy ssh-add -l- nếu danh sách này> 5 bạn cần xóa khóa hoặc tắt tác nhân.

Để khắc phục: Chạy ssh-add -d ~/.ssh/Xđâu Xlà chìa khóa bạn muốn xóa.


Sau khi cài đặt repo mazer-rackham và với thông tin này, tôi có thể tái tạo vấn đề của bạn và tôi đã thêm một giải pháp thay thế: Hãy chắc chắn rằng tác nhân biết được chìa khóa mơ hồ.
Henk Langeveld

Tôi đã thêm nó vào đại lý nhưng vẫn phải xóa chìa khóa. Có lẽ thứ tự bạn thêm vào các vấn đề đại lý? EDIT: Chỉ cần đọc chỉnh sửa của bạn.
Ash

Tôi có cùng một vấn đề, nhưng tôi không hiểu làm thế nào bạn sửa lỗi này? Tôi không thể xóa bất kỳ khóa nào khỏi ~/.ssh/thư mục của mình , sau đó tôi cần
rubo77

Bạn không xóa các khóa khỏi ~.sshthư mục của mình - bạn đang xóa các khóa khỏi ssh-agent daemon. Bạn luôn có thể thêm chúng trở lại sau. Xem ở đây để biết thêm.
Tro

4

Sau khi tôi thử tất cả các lời khuyên ở đây mà không thành công, tôi nhận ra rằng vấn đề của tôi là phương thức xác thực mới (GSSAPI), luôn không thành công.

Tôi đã giải quyết điều này bằng cách chỉnh sửa ~/.ssh/configtập tin:

Host *
  GSSAPIAuthentication no

Hy vọng điều này sẽ giúp ai đó quá.


Điều này dường như để tạo ra một khe ít nhất! Thiết lập của tôi với 5 phím thông qua ssh-agent hoạt động trở lại. Tôi đoán nó sẽ thất bại với 6 phím, mặc dù ...
Robert Siemer

2

Tác nhân ssh của bạn giữ nhiều khóa hơn máy chủ ssh cho phép thử xác thực ("MaxAuthTries", mặc định: 6).

Lưu ý rằng một số tác nhân ssh, đặc biệt là Khóa Gnome, tự động tải tất cả các khóa họ tìm thấy trong ~ / .ssh và các khóa này không thể được tải bằng "ssh-add - [dD]".

Dưới đây là một số giải pháp:

  • Bạn đã cấu hình khóa chính xác trong ~ / .ssh / config của bạn rồi, vì vậy bạn không cần đại lý. Làm cho khách hàng bỏ qua tác nhân, ví dụ unset SSH_AUTH_SOCKhoặc sử dụng "IdentityOnly = yes" như @ henk-langeveld đề xuất
  • Di chuyển một số phím ra khỏi ~ / .ssh (một thư mục con như ~ / .ssh / noauto cũng hoạt động) để ngăn chúng tự động được tải. Bạn vẫn có thể ssh-add chúng bằng tay nếu bạn cần chúng.
  • Tăng "MaxAuthTries" ở phía máy chủ, số lần thử xác thực được phép

2

Để ngăn chặn điều này, chúng ta có thể sử dụng ssh -o 'IdentitiesOnly yes'ví dụssh -i privateKey -o 'IdentitiesOnly yes' user@host

cách khác, chúng ta có thể thêm các dòng sau vào tệp ~ / .ssh / config

Host *
IdentitiesOnly yes

1

Để kết nối máy chủ bằng lệnh sửa nhanh:

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

Cách đề xuất được đề cập dưới đây:

Nhưng nếu bạn có biên lai capistrano hoặc các phần mềm khác đang kết nối với máy chủ ssh của bạn thì bạn phải sửa theo cách thích hợp như được đề cập dưới đây:

Trong tập tin ~ / .ssh / config đề cập đến tùy chọn "Nhận dạng chỉ có có" trong cấu hình máy chủ của bạn

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: Trong trường hợp tệp pem cũng đề cập đến phần mở rộng ".pem"


1

Tôi gặp phải lỗi tương tự trong khi cố gắng chạy một playbook ansible. Tôi đã kết thúc việc cung cấp tùy chọn ssh IdentityOnly bằng cách sử dụng --ssh-extra-args:

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

0

Thông điệp chính là

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

Bạn đã sao chép đầu ra ssh-config mơ hồ làm máy chủ mặc định vào .ssh/confignhưng điều này bị bỏ qua vì nó có các tham số xung đột (tên máy chủ, cổng). Không có mục phù hợp, ssh sẽ chỉ thử tất cả các khóa có thể tìm thấy.

Kiểm tra thử lại ssh với -itùy chọn

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

Tôi tin rằng đây là cách bạn chỉ định điều này trong Kho lưu trữ Ansible:

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

Viết tắt đường dẫn cho dễ đọc


Câu trả lời gốc:

So sánh đầu ra của vagrant ssh-configvới mục nhập mơ hồ trong của bạn .ssh/config. Hãy chắc chắn rằng đường dẫn khóa riêng là khớp chính xác.

Đồng thời xác minh rằng keyfile không thể được truy cập bởi bất kỳ tài khoản nào khác. Tất cả chúng ta đều biết khóa đó là gì, nhưng SSH không biết thứ này là kiến ​​thức công khai và cố gắng bảo vệ chúng ta khỏi việc sử dụng các khóa có thể bị xâm phạm.


Ban đầu tôi đã sao chép cấu hình từ vagrant ssh-confignhưng tôi đã kiểm tra lại và nó giống hệt nhau. Tôi cũng có thể cat /Users/ashleyconnor/.vagrant.d/insecure_private_keyvà có quyền đầy đủ.
Ash

Hãy chắc chắn rằng không ai khác có thể đọc hoặc ghi tệp.
Henk Langeveld

1
Chỉ có tôi có quyền rw. Không có may mắn về các đề xuất khác, tôi đã thử chạy ssh -i $HOME/.vagrant.d/insecure_private_key -l vagrant 192.168.222.111vẫn nhận đượcReceived disconnect from 192.168.123.123: 2: Too many authentication failures for vagrant
Ash

Liệu máy chủ từ xa có người dùng vagrant?
Henk Langeveld

Vâng. Khi tôi chạy, vagrant sshnó kết nối với tư cách người dùng mơ hồ
Ash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.