如何使用另一台服务器连接到防火墙后面的 SSH 服务器?

如何使用另一台服务器连接到防火墙后面的 SSH 服务器?

我有 2 台服务器,网络如下:

Server_A (Ubuntu) -> Firewall/Router -> Internet

Server_A 可以连接到互联网上的任何服务器。

Server_B (Ubuntu) which is directly connected to the internet.

Server_B 上的端口转发或任何防火墙没有限制

我无法从互联网连接到 Server_A,因为它位于本地网络内部,并且此处无法进行端口转发,我无权访问路由器。

Server_A 是否可以连接到 Server_B,以便我可以通过 SSH 连接到 Server_B 并与 Server_A 进行通信?

答案1

如果您可以在 Server_A 上运行 ssh 服务器,则可以通过 ssh 从 Server_A 到 Server_B,并将 Server_B 上的端口转发回 Server_A 的 ssh 服务器。

Server_A$ ssh -R 12345:localhost:22 Server_B
Password:
Server_B$ 

然后在 Server_B 上,您现在可以使用 localhost 在端口 12345 上 ssh 到 Server_A:

Server_B$ ssh -p 12345 localhost
Password:
Server_A$

如果你真的想要在 Internet 上公开 Server_A 的 ssh 服务器,您可以使端口转发可从其他主机访问,但这需要 Server_B 的 sshd_config 文件允许GatewayPorts

Server_A$ ssh -R '*:12345:localhost:22' Server_B
Password:
Server_B$ 

然后从任何地方:

Anywhere$ ssh -p 12345 Server_B
Password:
Server_A$

但正如评论中提到的非常小心不要跳过一些重要的安全策略。

答案2

考虑使用 Teredo(开源世界中的 Miredo)。以下段落是从维基百科无耻地复制的摘录。

在计算机网络中,Teredo 是一种过渡技术,可为 IPv4 Internet 上支持 IPv6 的主机提供完整的 IPv6 连接,但没有与 IPv6 网络的本机连接。与类似协议不同,它甚至可以从家庭路由器等网络地址转换 (NAT) 设备后面执行其功能。

一旦服务器启动并运行,Teredo 客户端将自动连接到中继服务器并获取可路由的 IPv6 地址。该 IPv6 地址可以是静态的或动态的(取决于 Teredo 中继/服务器)。如果需要,您甚至可以进行动态 DNS 更新。

这将为您提供服务器和客户端之间的无缝双向连接,而无需诉诸端口转发。您可能必须通过使用 PKI 基础设施限制对 IPv6 地址的访问来解决安全问题。

相关内容