通过外部服务器 SSH 防火墙后的两台计算机

Posted

技术标签:

【中文标题】通过外部服务器 SSH 防火墙后的两台计算机【英文标题】:SSH two computers behind firewalls through external server 【发布时间】:2011-06-30 00:32:49 【问题描述】:

我在一所大学拥有两台计算机。它们都位于某种防火墙等后面,这使我无法通过网络直接连接它们。他们都可以通过 SSH 公用计算机,但我不知道如何通过 ssh 从一台计算机连接到另一台计算机。我还经营一个小型网站。我的问题是,我可以使用我网站的公共地址以某种方式连接我的两台计算机,而不会让所有信息流过我的网站并占用我所有的带宽吗?理想情况下,我想在两台计算机之间创建一个 ssh 隧道。

我已经尝试过 Hamachi,它不再与 mac 配合得很好,我想要更多地控制连接。

【问题讨论】:

【参考方案1】:

假设您想通过您的 ServerC(您的公共服务器)从 MachineA SSH 到 MachineB(都在大学)。

您需要在 ServerC 和 MachineB 上运行 sshd。

运行以下命令,假设您的 sshd 正在侦听 MachineB 和 ServerC 上的 22 端口:

# Forward incoming connections from ServerC:22000 to MachineB:22
(on MachineB) ssh -R22000:127.0.0.1:22 -N user@ServerC
# Forward incoming connections from 127.0.0.1:22000 to ServerC:22000
(on MachineA) ssh -L22000:127.0.0.1:22000 -N user@ServerC
# Establish the link between MachineA and MachineB
(on MachineA) ssh -p 22000 user@127.0.0.1

此方法只需要访问端口 22,如果您的大学代理是邪恶的,您可以轻松地将其更改为 80 或 443。

【讨论】:

如果不能直接连接两台机器,这是一个无法避免的问题。但是,如果您使用远程shell 只键入命令(即不是两台主机之间的文件操作),带宽使用将相当低。对于文件操作,使用带有 -l 参数的 scp 来限制带宽使用。 h-online.com/security/features/…

以上是关于通过外部服务器 SSH 防火墙后的两台计算机的主要内容,如果未能解决你的问题,请参考以下文章

在 NAT 后的两台计算机之间建立连接

从外部 IP 连接到 MySql

为啥用路由器连的两台电脑互相PING不通

SSH协议远程开发板Linux系统

SSH免密登录设置

Linux系统——ssh-key连接原理