我有一个从 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