我阅读了该问题的几个版本并尝试实现它们,但它们没有起作用,所以我想用具体的细节来询问我的问题。
主机 A:本地计算机
主机 B:中间计算机(我可以使用公钥 foo.key 从本地访问
主机 C:最终计算机(我可以从主机 B 访问它)
我遵循如下命令:
ssh -J [email protected] [email protected]
但钥匙该放哪儿呢?
当我尝试类似的事情时:
ssh -i foo.key -J [email protected] [email protected]
它也会给出错误。
答案1
一般语法是ssh -J <intermediates> <final>
,所以根据您提供的信息,实际的命令应该是:
ssh -J user@hostB user@hostC
如果使用-J
或ProxyJump
,所有连接都由本地运行的客户端建立,因此所有私钥都必须仅在本地系统上可用。
该-i
选项仅允许为所有连接指定相同的密钥。如果不同的主机(例如中间主机与最终主机)需要不同的密钥,则需要在 ssh-agent 中指定它们~/.ssh/config
(或将它们加载到 ssh-agent 中):
Host hostB
IdentityFile ~/bastion.key
Host hostC
IdentityFile ~/finalserver.key
(如果需要,您可以在同一个文件中指定User user
和/或。)ProxyJump user@hostB