就在我以为我已经完全了解 SSH 的工作原理时,它又突然随机停止工作了。我在两台机器上的权限都是完美的。一台是 Debian 机器,另一台是使用 WSL 的 Windows 机器
.ssh = 700 (drwx------)
id_rsa.pub = 644 (-rw-r--r--)
id_rsa (private) = 600 (-rw-------)
authorized_keys = 600 (-rw-------)
在两台机器上我都取消注释并将其设置为PasswordAuthentication
并将其设置为no
我取消注释PubkeyAuthentication
并将其设置为yes
我重启了两台电脑的 ssh,以确保设置是最新的。我甚至使用了调试级别 3 来查看发生了什么。我已将各自的公钥提供给两台电脑并将它们保存在文件中authorized_keys
,但我仍然感到困惑...
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug2: resolving "deb99" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to deb99 [192.168.1.185] port 22.
debug1: Connection established.
debug1: identity file /home/ghost/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ghost/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.9p1 Debian-10+deb10u2
debug1: match: OpenSSH_7.9p1 Debian-10+deb10u2 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to deb99:22 as 'izuhu'
debug3: hostkeys_foreach: reading file "/home/ghost/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/ghost/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from deb99
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:hhqp/XWY6px3iVwD6X6+Zm8URnnS+Jbh+XUIrFFgzBc
debug3: hostkeys_foreach: reading file "/home/ghost/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/ghost/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from deb99
debug3: hostkeys_foreach: reading file "/home/ghost/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/ghost/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 192.168.1.185
debug1: Host 'deb99' is known and matches the ECDSA host key.
debug1: Found key in /home/ghost/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug2: key: /home/ghost/.ssh/id_rsa (0x7fffe2daf180)
debug2: key: /home/ghost/.ssh/id_dsa ((nil))
debug2: key: /home/ghost/.ssh/id_ecdsa ((nil))
debug2: key: /home/ghost/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:VSUBaSXtJL5FS4ljSDbvAOpCrfFyHKnujJZ4rXdtnMU /home/ghost/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/ghost/.ssh/id_dsa
debug3: no such identity: /home/ghost/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/ghost/.ssh/id_ecdsa
debug3: no such identity: /home/ghost/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/ghost/.ssh/id_ed25519
debug3: no such identity: /home/ghost/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
izuhu@deb99: Permission denied (publickey).
问题到底是什么?另外,我不确定我的调试是否显示了只有我才能看到的东西,所以我再次重置了我的 ssh 密钥哈哈
答案1
数据包类型 51 表示“SSH_MSG_USERAUTH_FAILURE”,通常当服务器无法识别(或喜欢/支持)客户端提供的公钥时发生。
在这种情况下,最好的故障排除方法是启用服务器端的调试日志记录,并查看服务器的调试日志输出以确定拒绝公钥的原因。
常见问题包括:
您尝试验证的用户帐户的 SSH 服务器上尚未正确配置 .pub 文件(或相应的密钥)。
.pub 文件(或相应的密钥)存在于服务器上,但它所在文件的权限过于开放,您需要先修复该服务器端文件的权限,然后服务器才会允许它尝试进行身份验证。
您提供了有关权限的信息,但不清楚您显示的权限是 SSH 客户端计算机上的 .ssh 目录还是 SSH 服务器计算机上的 .ssh 文件夹(即 izuhu 用户帐户主文件夹中的 .ssh 文件夹)。
下一步的最佳选择是检查 ssh 服务器端的日志,以找出它拒绝公钥的原因。
答案2
如果两台机器上的所有权限都是正确的,你已经通过更改重新启动了 ssh,确保每台机器都有各自的密钥,等等,并且仍然失败
请
确保你没有sudo
在一台电脑上运行 ssh,而在另一台电脑上运行。当你这样做时,将使用两个不同的密钥。一个用于 root,一个用于普通用户。你看,在我的情况下....ssh 正在寻找 root 密钥,而我甚至还没有生成一个,这就是它不断抛出错误的原因SSH Permission denied (publickey)
。
我为此浪费了太多时间,这让我很沮丧,并且因为沮丧而毫无必要地彻底清除了 Debian 系统。我猜想这就是我在旧的 Debian 设置上所做的,因为我仍然在努力尝试让 ssh 在全新安装上工作。直到我像 jdev 咨询的那样调试另一台机器时,我才发现问题......
我希望这真的能帮助别人,因为我浪费了太多时间了我很自豪地说。我从这一切中学到的教训是……
如果您遇到任何问题都可以使用详细模式或调试模式....
充分利用它!不要固执!!