实验室服务器远程访问终极方案:SSH 反向隧道 + systemd 自动重连
实验室服务器远程访问终极方案SSH 反向隧道 systemd 自动重连适用于没有公网 IP 的实验室服务器想用 VSCode / SSH / Jupyter 远程开发希望稳定、自动重连、开机自启 一、问题背景在很多实验室环境中GPU 服务器内网机器❌ 没有公网 IP无法直接 SSH ❌无法用 VS Code Remote ❌Jupyter / TensorBoard 无法访问 ❌但通常可以访问外网主动连接 二、核心思路关键我们引入一台有公网 IP 的云服务器作为“跳板机”。实验室服务器 C --- 云服务器 B --- 本地电脑 A (主动连接)核心技术SSH 反向隧道Reverse SSH Tunnel本质一句话让内网服务器主动“把自己暴露”到公网。⚙️ 三、环境准备1️⃣ 云服务器 B阿里云等确保 SSH 配置允许端口转发sudovim/etc/ssh/sshd_config修改为AllowTcpForwardingyesGatewayPortsyes重启 SSHsudosystemctl restart sshd2️⃣ 开放安全组端口在云服务器控制台开放TCP 123453️⃣ 实验室服务器 C准备 SSH 私钥chmod600/root/.ssh/aliyun.pem测试连接ssh-i/root/.ssh/aliyun.pem root47.104.XXX.XXX 四、建立反向 SSH 隧道在实验室服务器执行ssh-i/root/.ssh/aliyun.pem\-oServerAliveInterval30\-oServerAliveCountMax3\-oExitOnForwardFailureyes\-NR0.0.0.0:12345:localhost:22\root47.104.XXX.XXX 参数解释参数含义-R远程端口转发12345云服务器开放端口localhost:22映射到本机 SSH-N不执行命令ServerAliveInterval心跳保活ExitOnForwardFailure转发失败直接退出 五、验证连接在云服务器 Bss-tln|grep12345应看到0.0.0.0:12345在本地电脑 Assh-p12345用户名47.104.XXX.XXX连接成功 六、实现自动重连 开机自启关键使用 systemd 创建服务。1️⃣ 创建服务文件sudonano/etc/systemd/system/reverse-ssh.service写入[Unit] DescriptionPersistent reverse SSH tunnel Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple Userroot ExecStart/usr/bin/ssh \ -i /root/.ssh/aliyun.pem \ -o StrictHostKeyCheckingaccept-new \ -o ServerAliveInterval30 \ -o ServerAliveCountMax3 \ -o ExitOnForwardFailureyes \ -o TCPKeepAliveyes \ -N -R 0.0.0.0:12345:localhost:22 \ root47.104.XXX.XXX Restartalways RestartSec10 [Install] WantedBymulti-user.target2️⃣ 启动服务sudosystemctl daemon-reloadsudosystemctlenablereverse-sshsudosystemctl start reverse-ssh3️⃣ 查看状态systemctl status reverse-ssh 七、VS Code 远程连接编辑本地 SSH 配置~/.ssh/configHost lab HostName 47.104.XXX.XXX Port 12345 User 实验室用户名VS Code Remote SSH 直接连接lab 八、扩展Jupyter / TensorBoard / Web服务修改 serviceExecStart/usr/bin/ssh \ -i /root/.ssh/aliyun.pem \ -o ServerAliveInterval30 \ -o ServerAliveCountMax3 \ -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 \ root47.104.XXX.XXX对应服务端口服务12345SSH8888Jupyter6006TensorBoard访问方式http://47.104.XXX.XXX:8888 九、常见问题❓ Q1必须有公网 IP 吗❌ 不需要✅ 只需要能访问外网❓ Q2为什么连接不上常见原因没开GatewayPorts yes安全组没放行端口端口被占用❓ Q3为什么端口是 127.0.0.1 没开启公网绑定解决GatewayPortsyes 十、最终效果你将获得能力是否支持SSH 远程✅VS Code Remote✅Jupyter✅TensorBoard✅HTTP 服务✅自动重连✅开机自启✅ 总结systemd SSH 反向隧道 实验室远程访问标准方案
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2480260.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!