明天我要给别人看一个在我本地机器上运行的网站。通常情况下,我会通过本地路由器上的端口转发来完成这个任务,但是由于硬件故障以及它的替换非常糟糕,我的当前路由器不允许我进行端口转发。
因此,由于这个延迟,并且不想把整个事情推到适当的服务器上,我有了一个疯狂的想法:我可以通过SSH将我的端口转发到外部服务器吗?
我以前做过港口隧道挖掘,但我通常是以正确的方式进行的:
我想做的是:
发布于 2011-06-22 17:28:13
将端口80从本地计算机(localhost)转发到端口8000上的远程主机的命令是:
ssh -R 8000:localhost:80 oli@remote-machine这需要在SSH服务器上进行额外的调整,将行添加到/etc/ssh/sshd_config:
Match User oli
GatewayPorts yes接下来,通过执行sudo reload ssh的服务器重新加载配置。
设置GatewayPorts yes会使SSH绑定通配符地址上的端口8000,因此它可以用于remote-machine (remote-machine:8000)的公共地址。
如果需要选择不绑定通配符地址上的所有内容,请将GatewayPorts yes更改为GatewayPorts clientspecified。由于默认情况下ssh绑定到环回地址,因此需要指定一个空bind_address来绑定通配符地址:
ssh -R :8000:localhost:80 oli@remote-machine如果:设置为clientspecified,并且希望允许公共访问remote-machine:8000,则8000之前的GatewayPorts是强制性的。
相关手册摘录:
-R 绑定_地址:端口: host :hostport 指定远程(服务器)主机上的给定端口将被转发到给定主机和本地端的端口。这是通过分配一个套接字来侦听远程端的端口来实现的,每当连接到该端口时,该连接就通过安全通道转发,并从本地计算机连接到主机端口主机。默认情况下,服务器上的侦听套接字将仅绑定到回送接口。这可以通过指定一个bind_address来重写。空的bind_address或地址‘*’表示远程套接字应该在所有接口上侦听。只有启用服务器的bind_address选项(参见sshd_config(5)),才能指定远程GatewayPorts。
GatewayPorts 指定是否允许远程主机连接到为客户端转发的端口。GatewayPorts可用于指定sshd应允许远程端口转发绑定到非环回地址,从而允许其他主机进行连接。该参数可能是“否”,以强制远程端口转发仅对本地主机可用,“是”强制远程端口转发绑定到通配符地址,或“客户指定”允许客户端选择将转发绑定到的地址。默认为“否”。
另请参阅:
https://askubuntu.com/questions/50064
复制相似问题