实验步骤:
以公网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 接口。
网友评论