没有ssh-add的ssh密钥转发

ssh key forward without ssh-add

我有几个主机 HostAHostB 和一个密钥 KeyX 用于 ssh 到两个主机。我试图先 ssh 到 HostA,然后从 HostA.

ssh 到 HostB

以下步骤不起作用:

localhost :> ssh -i KeyX HostA
hosta :> ssh -A HostB

SSH 到 HostB 失败并出现错误抱怨 "Permission denied (publickey)."

以下步骤有效:

localhost:> ssh-add KeyX
localhost:> ssh -i KeyX HostA
hostA:> ssh -A HostB

有效。我知道 ssh-add 将密钥添加到 ssh-agent,但不明白为什么第一个进程不起作用以及为什么将密钥添加到代理会有所不同。有人可以解释 ssh-add 满足的密钥转发需要什么吗,可用的 public 文档中不清楚。

I understand that ssh-add adds key to the ssh-agent

but don't understand why the first process does not works and why adding the key to the agent make a difference.

密钥在您的机器上。如果您不将其添加到代理并且不将此代理转发到 hostA(可能在配置中指定?),它将看不到密钥并且无法对您进行身份验证。

Can someone explain what was required for key forward that is satisfied by ssh-add, wasn't clear from available public documents.

使用ssh-add -l。它将列出您在代理中拥有的密钥。起初它不列出您的密钥,在 ssh-add 之后列出。您应该能够 运行 在 hostA 上执行相同的命令,您应该会看到从本地计算机转发的相同密钥。