双重 ssh 要求输入密码来解锁 RSA 密钥,但实际上不应该

双重 ssh 要求输入密码来解锁 RSA 密钥,但实际上不应该

我有两台机器,M1 和 M2,都运行 OS X,还有第三台机器 L,运行 Linux。M1 和 M2 在 Keychain 中解锁了 RSA 密钥,因此我可以:

  • 从 M1 到 M2 的 ssh 连接无需输入密码或密钥的密码
  • 从 M2 到 L 的 ssh 连接无需输入密码或密钥的密码

但是,当我从 M1 ssh 到 M2,然后到 L(物理上仍在 M1 上)时,它会要求我输入密钥的密码!我尝试login.keychain使用security命令手动解锁,但似乎没有效果。

出了什么问题?我怎样才能在不输入任何密码的情况下进行双重 ssh?

答案1

钥匙串工作得正如它应该的那样,-A 所做的就是将你加载的钥匙从 M1 转发到 M2 再到 L。我怀疑当你登录到 M2 时,它并没有初始化你的钥匙/启动完整的会话,因为图形登录过程并没有发生,也没有产生它的所有副作用。

如果您想要将您的代理转发到任何您使用 ssh 的地方,您应该创建文件 ~/.ssh/config 并为 * 主机添加一个条目,并将 ForwardAgent 设置为 yes:

Host *
    ForwardAgent yes

此外,您可以通过将 * 替换为主机名来更具体地说明要将代理转发到哪个主机。

答案2

您正尝试从 M2 登录 L。这意味着 M2 必须拥有您的凭据(密钥和密码)。但您的凭据实际上在 M1 上。

您可以将凭据复制到 M2,但随后您必须与 M2 上的钥匙串进行交互。或者,您可以告诉 M2 联系 M1 上的钥匙串,而不是 M2 上的钥匙串。这实际上是常用方法,有些安装可以立即使用,但您的安装显然不行。

使能够代理转发从 M1 到 M2。在命令行上,使用 OpenSSH,传递选项-A(即在 M1 上运行ssh -A M2)。您也可以将ForwardAgent指令放入~/.ssh/config。也许在 OSX 上也有 GUI 方式来执行此操作。

相关内容