用于将端口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
如果将设置为,并且您想允许公众访问,则必须使用:
之前。8000
GatewayPorts
clientspecified
remote-machine:8000
相关手册摘录:
ssh(1)
-R [bind_address:] port:host:hostport
指定将远程(服务器)主机上的给定端口转发到本地的给定主机和端口。这通过分配一个套接字来侦听远程端的端口而起作用,并且每当对此端口建立连接时,该连接都会通过安全通道转发,并从本地计算机建立到主机端口hostport的连接。默认情况下,服务器上的侦听套接字将仅绑定到环回接口。可以通过指定bind_address来覆盖它。空的bind_address或地址“ *”表示远程套接字应在所有接口上侦听。仅当启用服务器的GatewayPorts选项时,指定远程bind_address才会成功(请参见sshd_config(5))。
sshd_config(5)
GatewayPorts
指定是否允许远程主机连接到为客户端转发的端口。可以使用GatewayPorts指定sshd应该允许远程端口转发绑定到非环回地址,从而允许其他主机进行连接。该参数可能为“否”以强制远程端口转发仅对本地主机可用,为“是”以强制远程端口转发绑定到通配符地址,或者为“ clientspecified”以允许客户端选择要向其发送地址的地址。转发是绑定的。默认为“否”。
也可以看看:
GatewayPorts
是这里的魔术子弹。我喜欢您已经找到了一个版本,可以让我将这种相当强大的技术限制于某些用户。