细节:

细节:

我使用的是多跳 SSH 连接,每跳都启用了代理转发。我想使用前一跳的密钥(而不是来自原始机器的密钥)连接到目标机器(机器 D)。

细节:

在机器 AI 的控制台上通过 SSH 连接到机器 B(ForwardAgent yes):

Machine A  ---SSH(id_rsa_A)--->  Machine B  ---SSH(forwarded_key)--->  Machine D1

当我ssh-add -L在 B 上执行时,我得到了id_rsa_A。如果我从 B 连接到 D1,它会用于id_rsa_A身份验证。

好的,这就是我想要的。


在机器 BI 的控制台上通过 SSH 连接到机器 C ( ForwardAgent yes):

Machine B  ---SSH(id_rsa_B) --->  Machine C  ---SSH(forwarded_key)--->  Machine D2

当我ssh-add -L在 C 上执行时,我得到了id_rsa_B。如果我从 C 连接到 D2,它会用于id_rsa_B身份验证。

好的,这就是我想要的。


现在我回到机器 A,并ForwardAgent yes通过 B 与机器 C 建立两跳 SSH 连接:

Machine A  ---SSH(id_rsa_A)--->  Machine B  ---SSH(id_rsa_B)--->  Machine C ---SSH(forwarded_key)--->  Machine D2

当我ssh-add -L在 C 上执行时,我得到了id_rsa_A。当我连接到机器 D2 时,SSH 连接使用,id_rsa_A即使 B 和 C 之间的先前连接明确使用了id_rsa_B

这就是我想要改变的。也就是我想要forwarded_key成为的id_rsa_B

是否有可能(以及如何)强制机器 C(从 A 通过 B 连接)用于id_rsa_B其传出 SSH 连接?


我甚至ForwardAgent no在第一次连接时尝试了选项:

Machine A  ---SSH(id_rsa_A)--->  Machine B

继续ForwardAgent yes后续连接:

Machine B  ---SSH(id_rsa_B)--->  Machine C

但进一步的连接根本不使用代理转发:

Machine C ---SSH(no_key)--->  Machine D2

它看起来只适用于控制台和当前连接的机器之间的整个管道。

相关内容