首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反向港口掘进

问反向港口掘进
EN

Ask Ubuntu用户
提问于 2011-06-22 16:46:20
回答 1查看 75.3K关注 0票数 69

明天我要给别人看一个在我本地机器上运行的网站。通常情况下,我会通过本地路由器上的端口转发来完成这个任务,但是由于硬件故障以及它的替换非常糟糕,我的当前路由器不允许我进行端口转发。

因此,由于这个延迟,并且不想把整个事情推到适当的服务器上,我有了一个疯狂的想法:我可以通过SSH将我的端口转发到外部服务器吗?

我以前做过港口隧道挖掘,但我通常是以正确的方式进行的:

  • 我连接到一个远程框,并要求端口12345在我的本地计算机上显示在端口12345。
  • 我在远程计算机上启动P12345上的一些东西
  • 我可以通过本地主机:12345访问它。

我想做的是:

  • 连接到远程PC,并要求它的本地P12345从我的本地P12345 (通过隧道)获取东西。
  • 我在P12345上的本地计算机上启动了一些东西
  • 其他人可以访问遥控器:12345,查看我的本地主机:12345。
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2011-06-22 17:28:13

将端口80从本地计算机(localhost)转发到端口8000上的远程主机的命令是:

代码语言:javascript
复制
ssh -R 8000:localhost:80 oli@remote-machine

这需要在SSH服务器上进行额外的调整,将行添加到/etc/ssh/sshd_config:

代码语言:javascript
复制
Match User oli
   GatewayPorts yes

接下来,通过执行sudo reload ssh的服务器重新加载配置。

设置GatewayPorts yes会使SSH绑定通配符地址上的端口8000,因此它可以用于remote-machine (remote-machine:8000)的公共地址。

如果需要选择不绑定通配符地址上的所有内容,请将GatewayPorts yes更改为GatewayPorts clientspecified。由于默认情况下ssh绑定到环回地址,因此需要指定一个空bind_address来绑定通配符地址:

代码语言:javascript
复制
ssh -R :8000:localhost:80 oli@remote-machine

如果:设置为clientspecified,并且希望允许公共访问remote-machine:8000,则8000之前的GatewayPorts是强制性的。

相关手册摘录:

ssh(1)

-R 绑定_地址:端口: host :hostport 指定远程(服务器)主机上的给定端口将被转发到给定主机和本地端的端口。这是通过分配一个套接字来侦听远程端的端口来实现的,每当连接到该端口时,该连接就通过安全通道转发,并从本地计算机连接到主机端口主机。默认情况下,服务器上的侦听套接字将仅绑定到回送接口。这可以通过指定一个bind_address来重写。空的bind_address或地址‘*’表示远程套接字应该在所有接口上侦听。只有启用服务器的bind_address选项(参见sshd_config(5)),才能指定远程GatewayPorts。

sshd_配置(5)

GatewayPorts 指定是否允许远程主机连接到为客户端转发的端口。GatewayPorts可用于指定sshd应允许远程端口转发绑定到非环回地址,从而允许其他主机进行连接。该参数可能是“否”,以强制远程端口转发仅对本地主机可用,“是”强制远程端口转发绑定到通配符地址,或“客户指定”允许客户端选择将转发绑定到的地址。默认为“否”。

另请参阅:

票数 111
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/50064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档