我想实现一个(临时的,不是一个稳定的配置) SSH 隧道,这样我就可以从盒子 A 通过 B 通过 SSH 到达盒子 C。
A--->B--->C
我了解到可以通过在 A 上运行 2 个命令来完成此操作:
ssh userB@B -L PORT:A:22
ssh userC@localhost -p PORT
问题是,只要可以从盒子 A 执行身份验证,这种方法就有效,例如,盒子 C 要求输入用户 C 的密码,盒子 A 会提示输入密码并输入。但是,在我的情况下,访问盒子 C 的方式是存储在盒子 B 上的密钥(因此,从盒子 B 只需输入密码,ssh userC@C
而不会提示输入密码)。盒子 A 只会看到消息Permission denied (publickey)
。
在这种情况下有没有办法允许访问?
答案1
感谢@Kamil Maciorowski,他们提到的答案很有帮助。ssh -J userB@B userC@C
和ssh userB@B 'ssh userC@C'
都有效。我发现前者更适合我的特定需求