删除~/.ssh文件夹后SSH密钥认证失败的问题求助
删除~/.ssh文件夹后SSH密钥认证失败的问题求助
大家好,我最近碰到了SSH密钥认证的棘手问题,想请各位大佬帮忙支支招:
之前我总是被要求输入密码才能连接服务器,而不是用SSH密钥自动认证。我想着把本地~/.ssh目录里的所有内容都删掉,重新在笔记本上生成新的密钥对,手动复制公钥后用SFTP客户端(Transmit)加到服务器的authorized_keys文件里,应该就能解决问题。但没想到这么操作之后,密钥认证还是失败了。
现在我能对服务器上的~/.ssh目录进行读写操作,但没法通过SFTP客户端编辑/etc/ssh/sshd_config来开启PasswordAuthentication选项——这让我没法临时切换回密码登录来排查问题。
我还试着把这台名叫“ubuntu”的服务器接到显示器上,屏幕显示:
Ubuntu 23.04 ubuntu ttyl
ubuntu login:
但不管我怎么输入账号密码,都没有任何反应,这部分也不知道能不能修复?
相关操作与输出信息
我查看了服务器的/var/log/auth.log日志,另外执行了几个SSH命令,结果如下:
# 尝试指定id_ed25519密钥登录 ➜ ssh -o "IdentitiesOnly=yes" -i id_ed25519 caleb@192.168.1.19 caleb@192.168.1.19: Permission denied (publickey). # 尝试指定id_rsa密钥登录 ➜ ssh -o "IdentitiesOnly=yes" -i id_rsa caleb@192.168.1.19 caleb@192.168.1.19: Permission denied (publickey). # 这里输错了命令,误把密钥文件名当成了主机名 ➜ ssh -v id_ed25519 caleb@192.168.1.19 OpenSSH_9.0p1, LibreSSL 3.3.6 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files debug1: /etc/ssh/ssh_config line 54: Applying options for * debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling debug1: Connecting to id_ed25519 port 22. ssh: Could not resolve hostname id_ed25519: nodename nor servname provided, or not known # 同样输错了命令 ➜ ssh -v id_rsa caleb@192.168.1.19 OpenSSH_9.0p1, LibreSSL 3.3.6 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files debug1: /etc/ssh/ssh_config line 54: Applying options for * debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling debug1: Connecting to id_rsa port 22. ssh: Could not resolve hostname id_rsa: nodename nor servname provided, or not known
另外我还执行了ssh -vvv -i id_rsa caleb@192.168.1.19获取了详细的调试日志,里面应该有更多认证失败的细节。
有没有朋友遇到过类似的问题?或者有什么排查的思路和解决办法?非常感谢大家的帮助!
备注:内容来源于stack exchange,提问作者Chris




