ssh 在提供非默认密钥时提示输入密码

ssh 在提供非默认密钥时提示输入密码

我有一个关于 ssh 公钥身份验证的问题。我在 RHEL 9 机器上生成了一个密钥对(受密码保护),如下所示:

ssh-keygen -f .ssh/key2

然后,我将公钥复制到远程主机上:

ssh-copy-id -i .ssh/key2.pub operator1@servera

现在,当我尝试连接时,仍然会询问密钥密码:

ssh -i .ssh/key2 operator1@servera

在执行过程中添加 -v 选项表明服务器接受了密钥:

No Kerberos credentials available (default cache: KCM:)
debug1: No credentials were supplied, or the credentials were unavailable or inaccessible
No Kerberos credentials available (default cache: KCM:)
debug1: Next authentication method: publickey
debug1: Offering public key: .ssh/key2 RSA SHA256:wzFYOSGEvzLSjgKe5EGlKXXuaWmFmG8E6gfxs2KG6Pg explicit
debug1: Server accepts key: .ssh/key2 RSA SHA256:wzFYOSGEvzLSjgKe5EGlKXXuaWmFmG8E6gfxs2KG6Pg explicit

那么为什么要求我输入密码呢?旁注:我已经授予 .ssh 文件夹权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/key2

答案1

SSH 密码保护密钥。要直接使用密钥或将其加载到 SSH 代理中时使用密钥ssh,您必须通过提供创建密钥时使用的密码来解锁它。

如果您不想在使用时提供密码ssh,请使用以下命令将其加载到已运行的 SSH 代理中:

ssh-add ~/.ssh/key2

这将要求提供密钥的密码一次,但随后允许您ssh连接到适当的远程主机,而无需再次以交互方式键入密码(直到代理终止或从代理中删除密钥)。

在评论中,您似乎认为由于公钥已复制到远程系统,因此您不需要提供 SSH 密钥的密码。您必须在需要时提供密钥的密码(在ssh没有代理的情况下连接时,或将密钥加载到代理中时)。公钥需要位于远程系统上,您才能使用 SSH 密钥身份验证,无论密钥是否受密码保护。

相关内容