外网无法访问到内网,归根结底就是因为内网对于外网不可见,一般要实现外网访问到内网,有两种方法:一种是端口映射,就相当于将内网主机的某个端口在防火墙上开放出来,这样一来就相当于是两台外网主机的通信了;另一种就是SSH反向连接,就是内网是可以访问到外网的,那么内网主机先主动连接外网主机,这样一来就建立了连接,然后外网主机就可以ssh登录到内网主机了,这就是所谓的反向连接。但是这种连接是不稳定的,可能会断掉,但也有方法解决。
前面说过这种反向连接不稳定,可能随时会断开,这时候又得重复上面步骤去打通,而当你无法登陆上内网主机去 *** 作以上的步骤时候,那就没法玩了。
这时可以使用autossh来解决这个随时断开的问题。
具体指令为:
autossh -M 2000 -NfR 1234:localhost:22 user1@172.16.32.11 -p 88
解释:
ubuntu下设置autossh开机自动启动
然后执行
注意:
疫情期间远程办公,搭建了VPN方便远程连接公司服务器,VPN连接需要知道公司的公网ip,而公网ip是动态变化,所以需要远程连接公司的服务器,查看公网ip。
记录下,备忘。
Linux 查询公网ip 指令:
向日葵Linux安装、使用方法
缺点:需要付费,精英版专享功能
通过ngrok内网穿透工具,创建tcp通道,监听22端口,这样可以通过ssh工具进行连接。
创建tcp通道
执行该指令,可以开始tcp通道,并监听22端口,但是无法关闭该终端(需要后台执行)。
启动之后使用该curl查看映射映射:curl localhost:4040/api/tunnels
启动之后便有了对应的映射关系:比如: tcp://3.tcp.ngrok.io:10111 ->localhost:22
1台内网机N可以上网,但是没有公网ip,用户userN,需要ssh的服务端和客户端,以及autossh软件;1台 *** 作机C需要通过互联网以ssh的形式主动连接内网机N,需要ssh的客户端;
1台具有公网ip的服务器S做中转,服务器S的ip为s.s.s.s,用户userS,ssh的端口为portS,需要ssh的服务端;
可以使用默认值
意思是服务器S上的12345端口映射到内网机N的22端口,这种方法会出现断线无法连接的情况
利用autossh,断线后会自动连接,更加可靠
autossh比ssh多了一个M参数。
更合适的方法是采用后文的自启动脚本。
编辑sshd_config文件
启用两个配置项,并设置为yes
至此 *** 作机C可以使用ssh客户端连接到服务器S的12345端口,实际上这个数据流会转发到内网机的22端口上,从而实现了内网穿透的功能。
创建自启动文件 /etc/systemd/system/autossh.service
内容如下
启用开机自启动
立即启动
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)