“有幸”使用了长宽和移动的宽带,体验了一把NAT内网的酸爽,于是有了本篇。本篇目的在于使用SSH在有公网IP的服务器上为本地NAT内网的机器建立反向隧道,用于外网访问。
本篇实例环境:
移动光纤(无可直接访问的公网IP)
Openwrt路由器(内网IP为192.168.188.1)
macOS 10.12.2 (内网IP为192.168.188.12)
一台Linux服务器(公网独立IP为12.34.56.78)
实现目标:
在外网使用VNC访问这台macOS的远程桌面。
由于有Openwrt路由器,所以隧道就直接在路由器上搭建,长期使用的话省得麻烦。
Linux服务器上的设置
在/etc/ssh/sshd_config中增加GatewayPorts yes一行,如果配置文件本身已有GatewayPorts no就修改为yes就行,然后设置好密钥登录,重启ssh服务。
macOS上的设置
系统偏好设置---共享---屏幕共享,打勾即可。
开始建立隧道:
登录Openwrt的SSH,执行下面一条命令即可完成。
ssh -i ~/.ssh/id_rsa -NgfR 9900:192.168.188.12:5900 root@12.34.56.78 -p 6022
解释下命令中各个参数:
使用密钥登录,免去输入密码,-i为指定密钥,如密钥为默认位置可不加此参数。
9900为在Linux服务器上准备监听的端口,192.168.188.12:5900为macOS的VNC地址以及端口,Linux服务器的远程SSH端口为6022。
反向隧道建立完成之后即可通过12.34.56.78:9900访问NAT内网中macOS的VNC远程桌面。