Linux-SSH反向连接(内网穿透,打洞)

Linux-SSH反向连接(内网穿透,打洞),第1张

对于外网来说,公司内部的是内网,中间隔了个防火墙,如果想从外网去访问公司内部网络,正常情况下是不可行的,也无法做到端口转发(除非在公司防火墙上打个洞),一般场景有外网访问公司内网,外网访问学校的内网。

外网无法访问到内网,归根结底就是因为内网对于外网不可见,一般要实现外网访问到内网,有两种方法:一种是端口映射,就相当于将内网主机的某个端口在防火墙上开放出来,这样一来就相当于是两台外网主机的通信了;另一种就是SSH反向连接,就是内网是可以访问到外网的,那么内网主机先主动连接外网主机,这样一来就建立了连接,然后外网主机就可以ssh登录到内网主机了,这就是所谓的反向连接。但是这种连接是不稳定的,可能会断掉,但也有方法解决。

前面说过这种反向连接不稳定,可能随时会断开,这时候又得重复上面步骤去打通,而当你无法登陆上内网主机去 *** 作以上的步骤时候,那就没法玩了。

这时可以使用autossh来解决这个随时断开的问题。

具体指令为:

autossh -M 2000 -NfR 1234:localhost:22 [email protected] -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

内容如下

启用开机自启动

立即启动


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8129837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存