无法使用 SSH,但可以使用 TeamViewer

无法使用 SSH,但可以使用 TeamViewer

我想通过 SSH 进入防火墙后面的计算机,该防火墙阻止 SSH 连接(传入和传出)。有趣的是,我仍然可以使用远程桌面软件 TeamViewer 访问计算机。我假设 TeamViewer 被允许进入,因为它使用的端口与 SSH 的默认端口 22 不同,因此我将以下端口添加到 /etc/ssh/sshd_config:

Port 22
Port 443
Port 80
Port 5938
Port 10000

然后尝试依次连接它们(例如)

ssh [email protected] -p 5938

所有端口均不起作用:我仍然收到Connection timed out错误。

为什么 TeamViewer 可以连接到远程计算机,而 SSH 却不能?如何通过 SSH 进入(或退出)远程计算机?

答案1

如果您想通过 SSH 连接到防火墙后面的计算机,那么您将需要向防火墙映射端口 22(或您决定使用的任何端口)添加端口转发(DNAT)规则到内部服务器上的 SSH 端口。

TeamViewer 可以使用以下技术来实现这一目的NAT 遍历UDP 打洞通过路由器与 PC 建立连接。虽然 TeamViewer 连接是点对点的(客户端直接连接到主机),但初始连接是在 TeamViewer 服务器的帮助下建立的,该服务器会告知主机有客户端正在尝试连接,然后通过让服务器和客户端尝试打开连接来帮助促进 NAT 遍历,然后将防火墙置于允许 TeamViewer 连接通过到主机的状态。

TeamViewer 连接到主机的流量通过路由器,就像访问网页的流量一样,当 PC 上的浏览​​器通过防火墙请求网页,然后将响应返回给它时,流量也会通过路由器。主要区别在于使用“技巧”来打开客户端防火墙/路由器上的相应端口,并允许远程 TeamViewer 客户端通过连接。

答案2

另一种方法是使用 ssh 中的反向端口转发:

在服务器上执行以下操作:

ssh -R 2222:localhost:22 _internet_server_you_own

因此,您最终将通过 ssh 连接到 internet_server 上的端口 2222 上的计算机。我认为这在 serverfault 上之前已经介绍过了。

相关内容