ssh远端端口转发的一个问题和解决方法

现在假设有主机local_A, 主机remote_B, remote_B可以被外界访问,而local_A不行。

这种情况下,我们可以通过ssh的远端端口转发的功能,来实现外界访问local_A的特定端口。在local_A上执行下面的命令为向外界暴露local_A的80端口,

ssh -f -N -R 8080:localhost:80 zwl@remote_B

-f表示在backgroud运行,-N表示只做隧道建立的连接,并不登录交互式bash,-R后面的参数表示当有访问remote_B的8080端口的时候,信息转给local_A, localA发给他看到的localhost:80端口。理论上,到这里我们在任意的一个可以连接remote_B的浏览器上输入,http://remote_B:8080/即可连接到local_A上的80端口,并显示其中的网页。但一顿操作猛如虎,看到的却是无法连接。

这里说一下排查问题的过程。
sudo lsof -i TCP:8080看到的是localhost:8080端口被使用。问题就出在这,这里应该显示被使用的端口是*:8080,前者表示你仅仅能在remote_B上连接这个端口,即local_A。
查过之后,发现解决方案是:需要配置remote_B上的/etc/ssh/sshd_config中的GatewayPorts yes。修改后重启sshd,问题解决。

posted @   zwlwf  阅读(189)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示