首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
v2ray节点搭建
1,074 阅读
2
软件添加id功能按钮
1,025 阅读
3
QQ扫码无法登录的解决方案
985 阅读
4
网易云音乐歌单ID获取教程
916 阅读
5
js逆向xhs
788 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
rust
flutter
esp32c3
springboot
安卓
linux
vue
dart
设计模式
docker
ssh
joe
快捷键
git
fish shell
maven
redis
netty
groovy
尽意
累计撰写
116
篇文章
累计收到
41
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
1
篇与
的结果
使用 AutoSSH 打造坚如磐石的内网穿透隧道
在远程运维和开发场景中,我们经常面临一个痛点:家里的电脑或公司的内网服务器没有公网 IP,想要从外部随时访问该怎么办?传统的 DDNS + 端口映射不仅配置繁琐,还会将内网端口直接暴露在公网,极易招致恶意扫描和攻击。最安全、最优雅的方案,莫过于利用一台公网 VPS 作为跳板机,通过 SSH 反向隧道实现“隐形”的内网穿透。但普通的 SSH 隧道有一个致命弱点:一旦遇到网络波动,连接就会“假死”,进程还在但数据不通。今天,我们就来聊聊如何使用 autossh 打造一个“打不死”的 SSH 隧道,实现稳定、安全的内网穿透。架构拓扑:打造安全的“隐形通道”我们的整体架构非常清晰:[外部设备] --(SSH加密连接)--> [公网跳板机] --(本地回环转发)--> [内网目标主机]这种架构有两个核心优势:隐蔽性:公网跳板机对外只开放常规的 SSH 端口,不暴露任何额外的业务端口。安全性:内网目标主机的服务只监听本地回环地址(127.0.0.1),对局域网内的其他设备完全不可见,所有流量都必须经过加密的 SSH 隧道。第一步:环境准备与密钥生成假设我们已经拥有一台公网跳板机(IP为 <公网跳板机IP>,SSH端口为 <跳板机SSH端口>),以及一台位于内网的目标主机(用户名为 <内网主机用户名>)。首先,我们需要在内网目标主机上安装必要的软件,并生成一把专门用于建立隧道的 SSH 密钥(不要与日常登录的密钥混用):# 更新软件源并安装 openssh-server 和 autossh sudo apt update sudo apt install openssh-server autossh # 生成专用的隧道密钥(一路回车,不设置密码) ssh-keygen -t ed25519 -f ~/.ssh/id_tunnel -N "" -C "autossh-tunnel"接下来,将这把密钥的公钥上传到公网跳板机:ssh-copy-id -i ~/.ssh/id_tunnel.pub -p <跳板机SSH端口> <跳板机用户名>@<公网跳板机IP>第二步:配置 Systemd 守护进程为了让隧道在系统开机时自动启动,并在意外断开时自动重连,我们使用 systemd 来托管 autossh。在内网目标主机上创建服务配置文件:sudo nano /etc/systemd/system/autossh-tunnel.service将以下内容写入文件中(注意替换对应的参数):[Unit] Description=AutoSSH Reverse Tunnel After=network-online.target ssh.service Wants=network-online.target [Service] User=<内网主机用户名> Type=simple # 核心参数解析: # -M 0: 禁用 autossh 自身的监控端口,改用 SSH 原生的心跳保活机制 # -N: 不执行远程命令,仅建立隧道 # -R 127.0.0.1:<跳板机映射端口>:localhost:22: # 将跳板机的指定端口绑定在 127.0.0.1,确保公网无法直接扫描 Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh -M 0 -N \ -o "ServerAliveInterval=30" \ -o "ServerAliveCountMax=3" \ -o "ExitOnForwardFailure=yes" \ -o "StrictHostKeyChecking=no" \ -p <跳板机SSH端口> \ -i /home/<内网主机用户名>/.ssh/id_tunnel \ <跳板机用户名>@<公网跳板机IP> # 崩溃或断开后自动重启 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target第三步:启动服务与验证配置完成后,启动服务并设置开机自启:sudo systemctl enable --now autossh-tunnel.service查看服务状态,确认是否正常运行:systemctl status autossh-tunnel.service如果看到 Active: active (running) 且没有 Permission denied 等报错,说明隧道已经成功建立。此时,隧道已经将内网目标主机的 22 端口,安全地投射到了公网跳板机的 <跳板机映射端口> 上。第四步:如何从外部连接?现在,无论你身处何地(公司、咖啡厅或旅途中),只要先通过 SSH 登录到公网跳板机,就可以轻松跳转到内网主机:# 1. 先登录跳板机 ssh -p <跳板机SSH端口> <跳板机用户名>@<公网跳板机IP> # 2. 在跳板机内,通过本地回环地址跳转到内网主机 ssh -p <跳板机映射端口> <内网主机用户名>@127.0.0.1总结通过 autossh + systemd + 反向隧道的组合,我们不仅实现了无公网 IP 环境下的远程访问,还保证了连接的极高稳定性与安全性。这套方案配置一次,即可长期稳定运行,是家庭实验室和远程运维的绝佳选择。
2026年07月26日
2 阅读
0 评论
0 点赞