无密码 SSH 仅在我已登录 SSH 时才有效

hen*_*nry 5 ssh password

因此,我使用以下方法设置了无密码 ssh:如何设置无密码 SSH 登录?

设置好之后,我希望我不需要密码来 ssh。我的问题是,在我第一次连接到 ssh 时,它会要求我输入密码,但除此之外的其他会话不会要求输入密码。

我已经检查了我的 sshd_config 以确保它包含:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

很确定我的权限是正确的,因为如果不是,那么无密码 ssh 将根本无法工作。

为了给这个问题添加更多“乐趣”,我注意到当我重新启动我的计算机(客户端计算机或 ssh 服务器计算机)时,有时它会起作用。然后当我关闭计算机并第二天再试时,它不再工作了。也许这完全是随机的,但这是我注意到的。

Jak*_*uje 4

这是加密 home 的常见问题,并且已多次得到解答,例如在Unix上,但甚至在Ubuntu 官方文档中也有介绍。

这可能是由于您的主目录(以及密钥)在登录期间无法访问所致。这可能是由于您的主目录在登录后从网络驱动器(在共享系统上)安装或您的主目录被加密(通常是工作站的安装)造成的。

解决这个问题很复杂,但我会看看一些讨论。解决方案是将密钥AuthorizedKeysFile移至其他可访问的位置或我们的密钥全局存储 ( /etc/security/authorized_keys),或某种 SSO 管理系统(IPA、LDAP),该系统将从目录服务器获取密钥(是的,可以是本地的) )。取决于您对目标系统的控制程度。

也许最好的解决方案是将密钥存储在其他位置,更改以下值sshd_config

AuthorizedKeysFile /etc/ssh/%u/authorized_keys
Run Code Online (Sandbox Code Playgroud)

无论如何,如果您要移动您的authorized_keys,请确保他们具有适当的权限并考虑到以下事实:如果您使用公钥登录,您将无法访问您的主目录(它是由您的密码加密的!),除非你改变了它的加密方式。