news 2026/7/2 7:50:18

实验室服务器远程访问终极方案:SSH 反向隧道 + systemd 自动重连

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实验室服务器远程访问终极方案:SSH 反向隧道 + systemd 自动重连

一、问题背景

在很多实验室环境中:

  • GPU 服务器(内网机器)❌ 没有公网 IP
  • 无法直接 SSH ❌
  • 无法用 VS Code Remote ❌
  • Jupyter / TensorBoard 无法访问 ❌

但通常:

👉可以访问外网(主动连接)


💡 二、核心思路(关键!)

我们引入一台有公网 IP 的云服务器作为“跳板机”。

实验室服务器 C ---> 云服务器 B <--- 本地电脑 A (主动连接)

核心技术:

👉SSH 反向隧道(Reverse SSH Tunnel)

本质一句话:

让内网服务器主动“把自己暴露”到公网。


⚙️ 三、环境准备

1️⃣ 云服务器 B(阿里云等)

确保 SSH 配置允许端口转发:

sudo vim /etc/ssh/sshd_config

修改为:

AllowTcpForwarding yes GatewayPorts yes

重启 SSH:

sudo systemctl restart sshd

2️⃣ 开放安全组端口

在云服务器控制台开放:

TCP 12345

3️⃣ 实验室服务器 C

准备 SSH 私钥:

chmod 600 /root/.ssh/aliyun.pem

测试连接:

ssh -i /root/.ssh/aliyun.pem root@47.104.XXX.XXX

🔌 四、建立反向 SSH 隧道

在实验室服务器执行:

ssh -i /root/.ssh/aliyun.pem \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -o ExitOnForwardFailure=yes \ -NR 0.0.0.0:12345:localhost:22 \ root@47.104.XXX.XXX

🔍 参数解释

参数含义
-R远程端口转发
12345云服务器开放端口
localhost:22映射到本机 SSH
-N不执行命令
ServerAliveInterval心跳保活
ExitOnForwardFailure转发失败直接退出

🧪 五、验证连接

在云服务器 B:

ss -tln | grep 12345

应看到:

0.0.0.0:12345

在本地电脑 A:

ssh -p 12345 用户名@47.104.XXX.XXX

连接成功 🎉


🔄 六、实现自动重连 + 开机自启(关键)

使用 systemd 创建服务。


1️⃣ 创建服务文件

sudo nano /etc/systemd/system/reverse-ssh.service

写入:

[Unit] Description=Persistent reverse SSH tunnel After=network-online.target Wants=network-online.target [Service] Type=simple User=root ExecStart=/usr/bin/ssh \ -i /root/.ssh/aliyun.pem \ -o StrictHostKeyChecking=accept-new \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -o ExitOnForwardFailure=yes \ -o TCPKeepAlive=yes \ -N -R 0.0.0.0:12345:localhost:22 \ root@47.104.XXX.XXX Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

2️⃣ 启动服务

sudo systemctl daemon-reload sudo systemctl enable reverse-ssh sudo systemctl start reverse-ssh

3️⃣ 查看状态

systemctl status reverse-ssh

💻 七、VS Code 远程连接

编辑本地 SSH 配置:

~/.ssh/config
Host lab HostName 47.104.XXX.XXX Port 12345 User 实验室用户名

VS Code Remote SSH 直接连接:

lab

🌐 八、扩展:Jupyter / TensorBoard / Web服务

修改 service:

ExecStart=/usr/bin/ssh \ -i /root/.ssh/aliyun.pem \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -N \ -R 0.0.0.0:12345:localhost:22 \ -R 0.0.0.0:8888:localhost:8888 \ -R 0.0.0.0:6006:localhost:6006 \ root@47.104.XXX.XXX

对应服务

端口服务
12345SSH
8888Jupyter
6006TensorBoard

访问方式:

http://47.104.XXX.XXX:8888

🧩 九、常见问题

❓ Q1:必须有公网 IP 吗?

❌ 不需要
✅ 只需要能访问外网


❓ Q2:为什么连接不上?

常见原因:

  • 没开GatewayPorts yes
  • 安全组没放行端口
  • 端口被占用

❓ Q3:为什么端口是 127.0.0.1?

👉 没开启公网绑定

解决:

GatewayPorts yes

🔥 十、最终效果

你将获得:

能力是否支持
SSH 远程
VS Code Remote
Jupyter
TensorBoard
HTTP 服务
自动重连
开机自启
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 7:49:37

自由空间光通信 FSO及应用

自由空间光通信 FSO及应用FSO&#xff08;Free-Space Optics&#xff0c;自由空间光通信&#xff09;激光链路是一种利用激光在大气、外太空或真空等自由空间中进行点对点无线数据传输的先进通信技术。它将光纤通信中的“光波”直接释放到空气中&#xff0c;省去了铺设物理线缆…

作者头像 李华
网站建设 2026/7/2 7:49:28

AI生成多页面原型实战:APP与B端后台的生成效果与流程拆解

景一&#xff1a;AI生成APP原型&#xff08;C端电商实测&#xff09;先看一个大家最熟悉的C端场景。我假设要搞一个“垂直类球鞋二手交易APP”。C端其实最怕两件事&#xff1a;页面跳着不顺&#xff0c;还有结构不符合手机使用习惯。我没用很复杂的长文指令&#xff0c;就写了一…

作者头像 李华
网站建设 2026/7/2 7:46:26

【JavaSE基础语法】07-继承与多态

1. 继承 面向对象思想提出了继承的概念&#xff0c;专门用来进行共性抽取&#xff0c;实现代码复用 1.1继承的概念 继承机制&#xff1a;是面向对象程序设计使代码可以复用的最重要手段&#xff0c;允许程序员在保持原有类特性的基础上进行扩展&#xff0c;新增功能&#xff0c…

作者头像 李华
网站建设 2026/7/2 7:45:08

全球顶尖存储芯片巨头 | Edge AI 系统专家 | 年薪60-100万 | 西安

关于我们 我们是全球半导体存储领域的领军企业&#xff0c;《财富》世界500强排名前列67。公司成立于2012年&#xff0c;坐落于陕西省西安市高新区综合保税区&#xff0c;园区总占地面积114万平方米&#xff0c;项目总投资超过280亿美元67。 作为改革开放以来中国电子信息行业…

作者头像 李华
网站建设 2026/7/2 7:45:06

工业级GNN落地实战:从关系建模到生产部署

1. 项目概述&#xff1a;当数据不再是孤岛&#xff0c;而是彼此牵连的网络“Graph Neural Networks: Unlocking the Power of Relationships in Predictions”——这个标题不是一句漂亮的口号&#xff0c;而是过去五年里我亲手落地的十几个工业级AI项目背后最真实的驱动力。它直…

作者头像 李华