通过公网ssh代理连接内网服务器

内网服务器通过公网ssh代理实现内网穿透

前言

有时需要通过外网连接到内网的服务器。

  • 前提:需要有广域网服务器,服务器之间免密。

1 环境

服务器类型系统主机名用户名IP说明
客户端Window 10node1本机ssh连接工具(例如:Xshell)
中转服务器ubuntu 16.04node2user28.8.8.8有广域网IP
目标服务器ubuntu 16.04node3user3172.16.156.101局域网IP,可以访问外网

2 配置目标服务器

2.1 安装autossh服务

sudo apt install -y autossh
autossh命令参数解释如下:
  • -f 后台运行
  • -C 允许压缩数据
  • -N 不执行任何命令
  • -R 将端口绑定到远程服务器,反向代理
  • -L 将端口绑定到本地客户端,正向代理
  • -p 转发服务器B的SSH登录端口号,默认为22

结合:

  • ssh -fCNR 反向代理
  • ssh -fCNL 正向代理

2.2 命令行配置连接中转服务器--临时有效

建立目标服务器到中转服务器的反向代理,具体指令为

autossh -M 中转服务器端口 -fCNR [中转服务器IP]:中转服务器端口:目标服务器IP:目标服务器端口 中转服务器用户名@IP

例如:

autossh -M 5000 -o "ServerAliveInterval 30" -CNR 6000:localhost:22 $user2@8.8.8.8
说明:端口可以自定义,
  • 第一次连接时不加-f后台运行,需要测试;
  • -M 5000:中转服务器用来接收目标服务器的信息,如果隧道不正常而返回给目标服务器让他实现重新连接,相当于会话保持;
  • -o "ServerAliveInterval 30":保持会话时间间隔,autossh中应该可以省略;
  • -CNR 6000:6000为中转服务器的反向代理端口;
  • localhost:22:目标Linux服务器的ssh端口,默认22。

3 配置中转服务器

3.1 测试连接目标服务器

ssh $user3@localhost -p 6000

如果可以登陆目标服务器表示成功!

3.2 建立中转服务器的正向代理

建立中转服务器的正向代理,用来做转发,具体指令为

ssh -fCNL [目标Linux服务器IP]:目标Linux服务器端口:中转服务器IP:中转服务器端口 中转服务器用户名@中转服务器IP

例:

ssh -fCNL "*:3000:localhost:6000" $user2@localhost

输入目标服务器的密码

3.3 客户端

直接配置Xshell

IP:8.8.8.8

端口:3000

用户名:$user3

密码:XXXXXXX

或者任意服务器登陆;
ssh -p 3000 $user3@8.8.8.8.8

输入目标服务器的密码

4 配置自启动

4.1 适用于CentOS6 和 CentOS7

输入

vim /etc/rc.d/rc.local

追加如下内容

autossh -M 5000 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 5" -fCNR 6000:localhost:22 $user2@8.8.8.8

ServerAliveInterval:保持活力时间
ServerAliveCountMax:允许的最大会话数

授予执行权限

chmod +x /etc/rc.d/rc.local

4.2 适用于system管理的服务,如:CentOS 7 / Ubuntu 16 / Ubuntu 18

4.2.1 编写autossh自启动脚本
vim /lib/systemd/system/autossh.service

添加如下内容

[Unit]
Description=AutoSSH service
After=network.target
[Service]
Type=forking
ExecStart=/etc/autossh.local
[Install]
WantedBy=multi-user.target
Alias=autossh.service
4.2.2 编辑调用的普通脚本
vim /etc/autossh.local

添加如下内容

#!/bin/bash -e
sudo -u $user3 autossh -M 5000 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 5" -fCNR 6000:localhost:22 $user2@B_ip &
4.2.3 设置开机自启动
sudo systemctl enable autossh # 加入自启动
sudo systemctl start autossh # 启动服务
sudo systemctl status autossh # 查看服务状态

参考

https://www.cnblogs.com/kwongtai/p/6903420.html

转载于:https://blog.51cto.com/moerjinrong/2300084

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值