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

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

因此我使用以下命令设置无密码 ssh:如何设置无密码 SSH 登录?

设置完成后,我以为 ssh 就不需要密码了。我的问题是,在第一次连接到 ssh 时,它会要求我输入密码,但在此基础上的其他会话将不是询问密码。

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

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

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

让这个问题更“有趣”的是,我注意到当我重新启动计算机(客户端计算机或 ssh 服务器计算机)时,有时它会工作。然后当我关闭计算机并在第二天再次尝试时,它不再工作。也许这完全是随机的,但这是我注意到的事情。

答案1

这是加密家庭的常见问题,并且已多次得到解答,例如Unix,但即使在官方Ubuntu 文档

这可能是由于登录时无法访问您的主目录(因此密钥也是不可访问的)。这可能是由于登录后您的主目录从网络驱动器(在共享系统上)挂载或您的主目录已加密(通常安装在工作站上)所致。

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

可能最好的解决方案是将密钥存储在其他地方,然后更改其中的值sshd_config

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

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

答案2

如果证书复制正确,那么它应该与以下格式的连接一起工作:

ssh hostname\ip -l username

其中 username 是你在 .ssh/authorized_keys 中拥有证书的用户

相关内容