因此,我使用以下方法设置了无密码 ssh:如何设置无密码 SSH 登录?
设置好之后,我希望我不需要密码来 ssh。我的问题是,在我第一次连接到 ssh 时,它会要求我输入密码,但除此之外的其他会话不会要求输入密码。
我已经检查了我的 sshd_config 以确保它包含:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
很确定我的权限是正确的,因为如果不是,那么无密码 ssh 将根本无法工作。
为了给这个问题添加更多“乐趣”,我注意到当我重新启动我的计算机(客户端计算机或 ssh 服务器计算机)时,有时它会起作用。然后当我关闭计算机并第二天再试时,它不再工作了。也许这完全是随机的,但这是我注意到的。
这是加密 home 的常见问题,并且已多次得到解答,例如在Unix上,但甚至在Ubuntu 官方文档中也有介绍。
这可能是由于您的主目录(以及密钥)在登录期间无法访问所致。这可能是由于您的主目录在登录后从网络驱动器(在共享系统上)安装或您的主目录被加密(通常是工作站的安装)造成的。
解决这个问题很复杂,但我会看看一些讨论。解决方案是将密钥
AuthorizedKeysFile移至其他可访问的位置或我们的密钥全局存储 (/etc/security/authorized_keys),或某种 SSO 管理系统(IPA、LDAP),该系统将从目录服务器获取密钥(是的,可以是本地的) )。取决于您对目标系统的控制程度。也许最好的解决方案是将密钥存储在其他位置,更改以下值
sshd_config:Run Code Online (Sandbox Code Playgroud)AuthorizedKeysFile /etc/ssh/%u/authorized_keys
无论如何,如果您要移动您的authorized_keys,请确保他们具有适当的权限并考虑到以下事实:如果您使用公钥登录,您将无法访问您的主目录(它是由您的密码加密的!),除非你改变了它的加密方式。