如何将本地端口隧道连接到远程服务器

如何将本地端口隧道连接到远程服务器

我有一个从 DynDNS 购买的域名。我将域名指向我的 IP 地址,以便可以运行服务器。我的问题是我住的地方离服务器计算机不近...我可以使用 ssh 隧道吗?据我了解,这将使我能够访问我的服务器。我希望远程计算机通过 ssh 隧道将流量从端口 8080 引导到 ssh 客户端,即我的笔记本电脑的端口 80。这可能吗?

答案1

这实际上很容易实现,即使它在 ssh 文档中有些隐蔽。假设是 OpenSSH,基本语法如下:

ssh -R 8080:localhost:80 -N [email protected]

这将打开 your-server.dyndns.org 的 8080 端口上的监听套接字,并且任何连接到 的连接都your-server.dyndns.org:8080将通过 SSH 隧道转发到打开该 SSH 连接的计算机,然后从那里定向到localhost:80

-N选项指示 SSH 不要打开 shell 或其他任何东西,只是建立端口转发,这样您就可以将其发送到后台并让其运行。

Putty 使用几乎相同的语法,但包装成某种 GUI。但原理是一样的。

但要小心行事。由于您实际上是在将外部流量引入您的网络,因此您正在打开网络防火墙的漏洞。如果这不是您的网络,您的管理员可能会对此表示反对并追究您的责任——通常您不允许某些类型的流量是有原因的。

答案2

为了能够将本地端口 80 不仅转发到环回接口(127.0.0.1),您必须首先GatewayPorts clientspecified/etc/ssh/sshd_config远程计算机上进行配置。

然后使用以下命令转发端口:

ssh -R 0.0.0.0:8080:localhost:80 -N [email protected]

答案3

以下是如何将 Web 服务器转发localhost:80到远程端口的方法8080

$ ssh -N -R 0.0.0.0:8080:localhost:80

您需要0.0.0.0:8080指定您需要一个可公开访问的端口:ssh 默认将绑定到“localhost”!

但默认情况下,ssh 不允许打开远程机器上的端口,因此您需要添加以下 sshd 配置:

AllowTcpForwarding yes
GatewayPorts yes

这通常会进入/etc/ssh/sshd_config或更好,在中创建一个文件/etc/ssh/sshd_config.d/

如果害怕重启 SSH 服务器,请让它重新加载您的配置。在 Amazon AWS 上,您可以这样做:

$ sudo /etc/init.d/ssh reload

相关内容