SSH端口转发实现内网穿透的实现

(编辑:jimmy 日期: 2024/12/24 浏览:2)

我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法。

使用ssh命令链接公网服务器

1、首先在外网服务器上编辑sshd的配置文件

vim /etc/ssh/sshd_config
#将GatewayPorts 开关打开
GatewayPorts yes
重启sshd服务,使用修改生效(linux 版本不同命令可能会有差异)
systemctl restart sshd 

2、命令

ssh -NTf -R <local-host>:<local-port>:<remote -host>:<remote-port> user@host

local-host 可省略
例如:ssh -NTf -R 8888:127.0.0.1:8080 root@host

3、参数说明

-C 允许压缩数据
-f 后台运行
-N 表示只连接远程主机,不打开远程shell
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
-T 不为这个连接分配TTY
-NT 代表这个SSH连接只用来传数据,不执行远程操作

保持ssh链接不断开

通常我们使用ssh 链接服务器的时候,如果长时间不操作,这个链接是会关闭的。

方法一、设置客户端

1)用户级别的设置

vim ~/.ssh/config(如果没有config创建一个)

2)全局设置

/etc/ssh/ssh_config

选择其中一个就可以,添加下面参数

#每隔60秒向服务器发送一个空包
ServerAliveInterval 60
#如果超过两次没成功就断开
ServerAliveCountMax 2
#转发失败后退出,便于重建连接
ExitOnForwardFailure yes 

临时写法(推荐,不影响他人)

ssh -o ServerAliveInterval=30 root@host
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2

方法二、设置服务器端

vim /etc/ssh/sshd_config
#每隔30秒,服务器端向客户端发送心跳
ClientAliveInterval 30
#3次心跳无响应之后,会认为Client已经断开
ClientAliveCountMax 3

方法三、使用shell脚本

touch myAutoSSH.sh
因为我设置ssh连接是rsa免密认证,所以这里逻辑就不需要密码 

ssh免密登录方法

while(1)
do
  ssh -NTR <local-host>:<local-port>:<remote -host>:<remote-port> user@host
done

保证断开后立马就能连上把-f参数去掉 否则就死循环了

方法四、使用autossh

需要下载autossh软件,操作和直接使用ssh 差不多

-M是监听端口,监听命令是否有无响应的,帮我们保持链接的

autossh -M 5678 -NTR <local-host>:<local-port>:<remote-host>:<remote-port> user@host

我不喜欢下载软件-乱七八糟的软件装的很多,也不喜欢修改配置-修改后怕影响别人使用,所以我喜欢使用客户端临时配置的方式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?