![即使私钥可用、已提供给服务器且服务器已知,SSH 仍会提示输入密码](https://linux22.com/image/561156/%E5%8D%B3%E4%BD%BF%E7%A7%81%E9%92%A5%E5%8F%AF%E7%94%A8%E3%80%81%E5%B7%B2%E6%8F%90%E4%BE%9B%E7%BB%99%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%94%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B7%B2%E7%9F%A5%EF%BC%8CSSH%20%E4%BB%8D%E4%BC%9A%E6%8F%90%E7%A4%BA%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81.png)
我在 VirtualBox 机器中有一个 ubuntu 桌面,而 openssh 服务器出现了奇怪的行为:
- 当我的用户尚未连接到服务器(第一个 ssh 连接)时,即使私钥可用(PuTTY + Pagent),它也会提示输入密码。在第一次连接之后,如果我打开第二个或第三个连接,它会使用密钥进行连接。
- 如果我关闭所有连接并打开一个新连接,它会提示输入密码。
- 如果我打开了 4 个连接,然后关闭第一个连接(提示输入密码的连接),则第五个连接将使用密钥打开
有谁已经看过这个了吗?
感谢您抽出时间提供帮助
答案1
用户的主目录是如何挂载的?听起来,无论出于什么原因,如果用户未登录,则用户的主目录不可用,因此 sshd 找不到 authorized_keys 文件。
另外,请查看服务器上的 /var/log/auth.log 中是否有任何消息。
更新:如果需要进行无密码登录,您可以更改 sshd_config 文件以在非加密目录中查找 authorzied_keys。 http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5
我认为这样的事情会起作用(未经测试):
AuthorizedKeysFile /etc/ssh/pubkeys/%u/authorized_keys .ssh/authorized_keys
这应该会告诉 sshd 检查未加密位置和加密位置中的公钥。查看手册页以获取更多信息。