autossh实现内外网穿透

一、介绍

​ Autossh 是一个用于建立和维护 SSH 隧道的工具,它在网络连接断开或中断时可以自动重新连接。通过 Autossh,您可以方便地在不稳定的网络环境下保持持久的 SSH 连接。

​ Autossh 是一个跨平台的工具,可在多个操作系统上使用,包括 Linux、Unix 和 macOS。它提供了简单而有效的方法来管理 SSH 隧道,并确保持久的、安全的连接。

​ 请注意,Autossh 是一个独立的工具,与 SSH 客户端本身无关。您仍然需要安装和配置 SSH 客户端来进行身份验证和建立初始的 SSH 连接。

​ 缺陷:目前只支持代理TCP端口。

二、环境

IP环境作用
23.183.84.76云服务器外网服务器通过云服务器访问内网资源
192.168.2.101内网服务器映射端口到云服务器上

三、部署

云服务器操作

## 修改ssh参数
[root@localhost ~]# vim /etc/ssh/sshd_config
## 修改下面参数
连接超时及转发相关:
GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 60  
ClientAliveCountMax 3
证书相关:
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
## 重启ssh服务
[root@localhost ~]# systemctl restart sshd

内网服务器操作

## 安装autossh
[root@localhost ~]# yum -y install autossh

## 免密钥登入云服务器
[root@localhost ~]# ssh-keygen -t rsa	//一直回车

## 上传云服务器
[root@localhost ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@23.183.84.76
## 端口代理
[root@localhost ~]# autossh -p 22 -M 11222 -fNR 11221:localhost:22 root@23.183.84.76
(将内网服务器22端口映射到云服务器11221端口,云服务器ssh端口22,云服务器11222端口为监听状态端口)

-p 22:指定SSH服务器的端口号。默认情况下,SSH使用22端口
-M 11222:指定Autossh使用的监测端口号。Autossh会在指定的端口上建立一个本地监听器,用于监测SSH连接的状态。请确保此端口未被其他应用程序占用。
-f: 在后台运行Autossh。
-NR 11221:localhost:22: 进行远程端口转发。此参数将远程服务器上的11221端口转发到本地计算机的SSH服务(默认端口 22)上。这样,您可以通过连接远程服务器的 11221 端口来访问本地计算机的 SSH 服务。

开机自启动

[root@localhost ~]# vim  /etc/rc.d/rc.local
## 末尾添加
autossh -p 22 -M 11222 -fNR 11221:localhost:22 root@23.183.84.76

[root@localhost ~]# chmod +x /etc/rc.d/rc.local

通过互联网服务器访问内网服务器

ssh -p 11221 root@23.183.84.76 (需要输入内网服务器的密码)
  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值