首先网上大部分抄的内容都是围绕pubkey配置不对的内容,参考价值不大。
已经排查:
- authorized_keys 内容 --- ok
- authorized_keys 权限 600 or 644 --- ok
还是失败,对等其他主机配置的,都是可以的,同样的客户端配置操作。
解决思路:
- 查看sshd日志:cat /var/log/secure,发现有用信息:
userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
- 根据上面的提示
sshd -T | grep pubkeyacceptedalgorithms pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
可以看到没有 ssh-rsa
- 配置 vi /etc/ssh/sshd_config 添加:
PubkeyAuthentication yes PubkeyAcceptedKeyTypes +ssh-rsa
然后重启:systemctl restart ssh
- 重启后再次查询:
sshd -T | grep pubkeyacceptedalgorithms pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa
在尾部已经发现ssh-rsa了
- 在客户端重新尝试,可以正常登陆了
总结:因为ubuntu是最新的版本,因为安全原因,默认把 ssh-rsa禁用了。所以根据此思路,如果我们有时间,我们还可以从升级客户端的配置来场景解决