autossh内网穿透

理论上来上autossh可以转发任意端口的服务,也支持Windows

现在测试内外网穿透

系统

CentOS7.6.1810

一、首先外网服务器配置修改:

这样可以把监听的端口绑定到任意 IP 0.0.0.0 上,否则只有外网的本机 127.0.0.1 可以访问

注意:如果只让外网的本机访问就不需要修改此项

vim /etc/ssh/sshd_config

GatewayPorts yes

重启ssh:systemctl restart sshd

二、内网服务器操作:

1、下载epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2、 安装autossh

yum -y install autossh

3、编写systemctl管理配置文件

vim /usr/lib/systemd/system/autossh.service

[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=root
Type=simple
PIDFile=/var/run/autossh.pid
ExecStart=/usr/bin/autossh \
          -o "StrictHostKeyChecking=false" \
          -o "ServerAliveInterval 60" \
          -o "ServerAliveCountMax 10" \
          -M 2222 \
          -NR 5678:172.17.0.41:22 \
          root@172.17.0.100 \
          -p 22 \
          -i /root/.ssh/id_rsa
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
StartLimitIntervalSec=5
StartLimitBurst=12
Restart=always
RestartSec=42s
[Install]
WantedBy=multi-user.target

 配置说明:

[Unit]  # 区块:启动顺序与依赖关系。
Description=Auto SSH Tunnel  # 当前配置文件的描述信息。
After=network-online.target  # 表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
[Service]  # 区块:启动行为
User=root  # 定义启动用户
Type=simple  # 定义启动类型

PIDFile=/var/run/autossh.pid  # 服务的pid文件路径

# 定义启动进程时执行的命令
ExecStart=/usr/bin/autossh \
          -o "StrictHostKeyChecking=false" \  # 连接新主机时不进行公钥确认
          -o "ServerAliveInterval 60" \  # 自动每60秒发送数据,延续ssh会话
          -o "ServerAliveCountMax 10" \  # 10次请求后都没能响应,那么SSH客户端就自动断开连接并退出
          -M 2222 \  # 在本机2222端口监视 SSH 连接状态
          -NR 5678:172.17.0.41:22 \  # -N 意思是不执行远程命令,-R意思是将远程主机(外网服务器)启动5678的端口数据转发到本地(内网服务器)的22端口上

          root@172.17.0.100 \  # 转发的远程主机(外网服务器)ssh连接信息,root用户@外网IP地址
          -p 22 \  # 外网服务器ssh服务的端口
          -i /root/.ssh/id_rsa  # 本地(内网服务器)的密钥


ExecReload=/bin/kill -HUP $MAINPID  # 重启服务时执行的命令
KillMode=process  # 定义 systemd 如何停止 autossh 服务
StartLimitIntervalSec=5  # 用于设置时长
StartLimitBurst=12  # 用于设置在一段给定的时长内,最多允许启动多少次
Restart=always  # 定义了 autossh 退出后,Systemd 的重启方式

RestartSec=42s  # 设置在重启服务(Restart=)前暂停多长时间,跟sshd服务一样
[Install]  # 区块:定义如何安装这个配置文件,即怎样做到开机启动。
WantedBy=multi-user.target # 表示该服务所在的 Target。multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

如果不想配置systemctl管理的话,用于测试执行或者命令行执行

这里加上 -f  表示后台执行

autossh \
          -o "StrictHostKeyChecking=false" \
          -o "ServerAliveInterval 60" \
          -o "ServerAliveCountMax 10" \
          -M 2222 \
          -fNR 5678:172.17.0.41:22 \
          root@172.17.0.100 \
          -p 22 \
          -i /root/.ssh/id_rsa

4、 重新加载systemctl

systemctl daemon-reload

5、设置autossh开机自启并启动

systemctl enable --now autossh

6、检查端口和服务

netstat -untpl
systemctl status autossh

 7、检查远程主机(外网服务器)的端口

netstat -untpl | grep 5678

8、远程主机(外网服务器)测试看看是否能连接到内网服务器

ssh 127.0.0.1 -p 5678

 至此,测试连接正常,内网穿透部署完成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现autossh的自启动,你可以按照以下步骤进行操作: 1. 创建一个启动脚本:首先,你需要创建一个启动脚本,以便在系统启动时运行autossh。你可以使用任何文本编辑器来创建一个新的脚本文件,比如autossh_start.sh。 2. 编辑启动脚本:在启动脚本中,你需要指定autossh的命令和参数。例如,如果你要使用autossh来建立一个SSH隧道连接,可以在启动脚本中添加以下内容: ```bash #!/bin/bash autossh -M 0 -f -N -L <本地端口>:<目标主机>:<目标端口> <SSH用户名>@<目标主机IP> ``` 请将 `<本地端口>`, `<目标主机>`, `<目标端口>`, `<SSH用户名>` 和 `<目标主机IP>` 替换为实际的值。 3. 保存并退出:完成编辑后,请保存并退出启动脚本。 4. 设置脚本权限:运行以下命令,以确保启动脚本具有执行权限: ```bash chmod +x autossh_start.sh ``` 5. 将脚本添加到启动项:将启动脚本添加到系统的启动项中,以便在系统启动时自动运行。具体的操作方式可能因操作系统而异。 - 对于基于 systemd 的系统(如Ubuntu 16.04+),你可以创建一个名为 `autossh.service` 的服务单元文件,并将其放置在 `/etc/systemd/system/` 目录下。在文件中添加以下内容: ``` [Unit] Description=Autossh Service After=network.target [Service] ExecStart=/path/to/autossh_start.sh [Install] WantedBy=default.target ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 然后,运行以下命令以重新加载 systemd 配置并启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable autossh.service ``` - 对于其他系统(如 CentOS、Red Hat、Debian 等),你可以将启动脚本的符号链接添加到 `/etc/rc.d/rc.local` 文件中。运行以下命令将启动脚本添加到 `rc.local` 文件中: ```bash sudo ln -s /path/to/autossh_start.sh /etc/rc.d/rc.local ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 6. 重新启动系统:完成上述步骤后,重新启动系统,autossh应该会在系统启动时自动运行。 这样,autossh就会在系统启动时自动建立 SSH 隧道连接。记得根据你的实际需求和配置进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值