需求
内网机器没有公网IP,但是可以访问外网,现在需要从外网访问内网机器。
举例,在家里机器A访问公司内网机器B。
前提
需要一台有公网IP的服务器S做中转,这样就可以打通AB两端了。
A <---> S <---> B
环境
- 家中A机,Win10
- 服务器S,Ubuntu 16.04 LTS 64 bit,公网IP: 123.12.23.13 (举例而已),SSH 端口: 22
- 内网B机,Ubuntu 18.04 LTS 64 bit,内网IP: 192.168.2.3 (举例而已),SSH 端口: 1122
工具
教程
官方教程:otunnel用法
实战
基于上面的环境,作如下操作:
-
在服务器S上下载
otunnel_linux_amd64
并运行:$ ./otunnel_linux_amd64 listen :10000 -s thisisasecret
这是在服务器S上监听端口10000,
thisisasecret
是连接密码 -
在内网B机上下载
otunnel_linux_amd64
并运行:$ ./otunnel_linux_amd64 connect 123.12.23.13:10000 -s thisisasecret -t 'r:192.168.2.3:1122::10022'
这是从内网机器连接到服务器S的10000端口,以后外网SSH连接到服务器S的10022端口,就等价于连接到内网B机的1122端口
-
从家中A机的bash窗口运行SSH:
$ ssh shit@123.12.23.13 -p 10022