SSH反向隧道搭建和保持SSH长时间不断开设置

两个内网机器怎么SSH连接

起初我得初想时在机房SSH连接操作宿舍的三个Linux虚拟机,但是装上虚拟机后发现,笔记本不能访问虚拟机;

ssh连接失败

百度之后才明白,两个内网并且不在同一网段是不能ping通的。后来百度了之后 知道有反向隧道技术;可以借助具有公网ip的服务器作为中转站。
具体方法:

  1. 需要 服务器A(内网),服务器A必须能够ping通B的ip;
    服务器B(公网)服务器B的ip必须是公网并且可以访问;
  2. 修改服务器B(公网)的/etc/ssh/sshd_config 的 #GatewayPorts no
    改成 GatewayPorts yes
    批注 2019-07-20 213222.png
批注 2019-07-20 213312.png
  1. 服务器A(内网)进行 ssh -NfR 2222:localhost:22 userb@123.123.123.123 操作
    关键词解释:

3.1 f建立成功后在后台运行
3.2 -N只建立连接,不打开shell
3.3 -R将远程主机的某个端口转发到本地主机的指定端口
3.4 -L将本地主机的某个端口转发到远程主机的指定端口
3.5 2222 是服务器B(公网)的某个端口(2222仅仅是举例子), 操作前必须打开且不能被占用,
3.6 22是服务器A的22端口,是Linux默认的ssh连接端口,不可改变;
3.7 userb 是服务器B的用户名,一般选择root就行;
3.8 123.123.123.123 是服务器B的公网ip地址;

  1. 运行 3 的 命令 会让你输入密码,此时输入的密码是服务器B的密码;
  2. 然后就可以在服务器B上进行测试:
1. ssh localhost -p 2222
2. 对自身进行 2222 端口的 ssh访问;
3. 此时要求输入的密码是服务器A的密码 
4. 然后就进入服务器A了;
  1. 在随意一台可以说上网的电脑上 对服务器B进行ssh连接。

6.1 ssh userb@123.123.123.123 -p 2222
6.2 对123.123.123.123 进行 端口为2222的ssh连接;
6.3 因为咱们已经设置过了端口转发,所以服务器B会将ssh请求转发到服务器A;
6.4 任意机器能够访问成功,必须在服务器A与服务器B之间有ssh反向隧道,也就是步骤3执行过后的几分钟内;
6.5 但是ssh默认一定时间两台服务器,没有数据通信就自动断开ssh(反向隧道),此时可以在服务器B设置ssh配置文件,以便于长时间保持ssh隧道。

  1. 修改/etc/ssh/sshd_config文件

7.1. 将ClientAliveInterval 和ClientAliveCountMax 的注释符号去掉
7.2. ClientAliveInterva 作用是每个参数时间向服务器发送请求消息 单位是秒
7.3. ClientAliveCountMax 作用是服务器发送请求后没有接收到响应次数后断开
7.4 ClientAliveInterva 60 ClientAliveCountMax 1440 意思是每隔60s发送一次请求 发送1440(24h)次后都没有接收到回应断开连接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。