如何通过中间服务器进行 SSH

如何通过中间服务器进行 SSH

ssh三个服务器 A、B 和 C。如果 A 到 B 和 C 到 B 没有密码(密钥),如何通过中间服务器 B 从 A 连接到 C?我在一次采访中遇到了这个问题。有人知道怎么做吗?

答案1

您在服务器 A 中:

ssh user@serverB ssh user@serverC 

或者您可以使用代理命令(请参阅此处了解更多信息代理和跳转主机) 如下:

使用以下数据~/.ssh在下创建一个配置文件:server A

Host serverC
        HostName serverC
        User user
        ProxyCommand ssh -l user serverB -W %h:%p

然后您只需用户从via即可ssh serverC到达它。serverAserverB

答案2

原来的问题没有多大意义。但我猜他们想询问私有网络中的服务器 A 和 C(这样他们就不会“看到”对方),而 B 对他们来说都是可见的。在这种情况下,答案是远程端口转发。举例来说:

创建从 C 到 B->C 的隧道:

C$ ssh -R 2222:localhost:22 B

然后像这样从A连接到C:

A$ ssh A ssh -p 2222 localhost

或者以更优雅的方式使用ssh_config.如果没有设置 pubkey 身份验证,则必须输入密码才能连接到服务器 C(来自 B 的 localhost:2222),但这应该不是问题。

答案3

@coffeMug我尝试了你的第一个解决方案,只有当 B->C 也少密码时它才有效不是吗?在我的例子中,A->B 和 C->B 没有密码。but not B-> C.

也许,并且只有也许 C 有允许 A 的配置,但不直接与 A 通信,仅需要中间服务器 B 进行网络通信。如果这是真的。服务器 B 上的 iptables 使用 nat 表可以为您做一些事情。

抱歉,我试图提供帮助...所以尝试一下,这是唯一的可能性,因为在所有其他情况下它会要求您输入密码,因为仅使用 ssh 就需要 B->C 无密码。

相关内容