利用ssh隧道搞定内网穿透

实验步骤:

以公网IP:116.51.1.** 为例,公网端口:6060,内网服务端口:8080

1.配置 116.51.1.** 防火墙端口:

firewall-cmd --zone=public --add-port=6060/tcp --permanent

firewall-cmd --reload

配置防火墙端口

2.用的是Xshell 所以需要开启116.51.1.**机器上的 sshd 相关配置:

配置文件:/etc/ssh/sshd_config

需要修改sshd_config配置文件的配置项,增加以下两项配置:

GatewayPorts yes
AllowTcpForwarding yes

sshd 相关配置

增加以上两项配置后,需要重启ssh后才可以生效:
重启sshd命令:

service sshd restart

重启sshd命令

如果不修改,转发端口永远绑定到loopback网络接口,配置成功后,只能在 116.51.1.** 机器上用 localhost:6060访问,无法在其他机器上用 116.51.1.**:6060访问

3.win10机器上,打开PowerShell ,输入以下命令建立隧道:

 ssh -p 22 -qngfNTR  "[::]:6060:localhost:8080" root@116.51.1.**

参数说明:

-p: 是 116.51.1.** 是ssh 端口
-qngfNTR: 建立隧道相关参数,固定的
"[::]:6060:localhost:8080": [::]:6060 表示把6060端口绑定到所有的网络接口上;localhost:8060表示需要被转发的内网服务器端口,本例中是localhost:8080
6060:公网IP的端口,8080:本机(内网主机)的要映射到公网的端口
root@116.51.1.** :公网机器 用户名 IP 。
执行以上命令后,输入yes回车
执行上面的的命令后需要输入公网机器(116.51.1.**)的密码,
输入正确的密码即可。

4.大功告成:

在任意一台机器上就可以通过
http://116.51.1.**:6060/访问 win10机器上的web服务了。
实验过程中踩过的坑:
1.win10 PowerShell中 关闭 ssh 连接窗口后,ssh 隧道没有关闭的问题:
查看已经建立的ssh连接:

Get-Process -Name ssh

杀死ssh连接:

Get-Process -Name ssh | Stop-Process

其他ssh客户端需要注意类似的问题,否则多次执行 ssh -p 22 -qngfNTR "[::]:6060:localhost:8080" root@116.51.1.** 会建立多个隧道
2.请注意 绑定都所有网络接口 "[::]:6060:localhost:8080" ,[::] 不能少,否则 只会绑定到 loopback 接口。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值