我正在使用多跳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进行身份validation。
好的,这是我想要的。
在Machine BI的控制台上工作,使用SSH连接到Machine 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进行身份validation。
好的,这是我想要的。
现在我回到机器A,并通过B与ForwardAgent yes和Machine 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 。
这是我想改变的。 也就是说我想把id_rsa_B 。
是否有可能(以及如何)强制Machine C(通过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
它看起来只是控制台和当前连接的机器之间的整个pipe道。