当前位置: 首页 > news >正文

实验室显卡与本机远程连接复盘:直连SSH到ZeroTier

适用场景:Windows 实验室训练机、内网环境、个人主机稳定远程 SSH 接入

这次要连接的是一台实验室 Windows 训练机,,配置为双RTX 5090。机器本身已经开启了 OpenSSH Server,最初我们希望直接通过实验室内网地址连接:10.195.63.48:22

一开始 SSH 能用,但后面频繁出现从外部连接超时。经过排查,问题不是 sshd 服务坏了,而是外部到实验室内网的访问路径不稳定。也就是说,机器本地 SSH 是正常的,但“外面打进去”不稳定。

先确认实验室机 SSH 本身正常

在实验室机上先检查 sshd 服务:

sc query sshd

正常状态:

STATE : 4 RUNNING

再看 22 端口是否监听:

netstat -ano | findstr :22

正常:

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING TCP [::]:22 [::]:0 LISTENING

最后在实验室机本机测试 SSH:

ssh admin@127.0.0.1

这一步能登录,说明 OpenSSH 服务、账号、密码都没有问题。后续外部连不上,重点怀疑网络路径、防火墙、安全软件或虚拟网卡入站策略。

直接 SSH 为什么不稳定

实验室机的内网地址 10.195.63.48 属于私有/校园内网地址。它能否被外部主机直接访问,取决于当时的路由、网关、防火墙和校园网策略。

我们观察到:

ping 10.195.63.48 超时 ssh admin@10.195.63.48 超时

但实验室机本地:

sshd 正常 22 端口监听正常 127.0.0.1 SSH 正常

所以结论是:

SSH 服务没坏,坏的是跨网访问路径。

这也是后面要引入虚拟组网或反向隧道的原因。

尝试过的方案

方案一:Tailscale

Tailscale 的思路是让两台机器加入同一个虚拟局域网,然后通过 100.x.x.x 地址互相访问。

但这次本机 Tailscale 出现了后端异常:

503 Service Unavailable: no backend

服务看起来在运行,但 CLI 和本地后端通信不稳定,tailscale ip -4、tailscale up 经常无输出或卡住。卸载重装后仍然没有稳定可用的图形界面和后端状态。所以这次没有继续采用 Tailscale。

方案二:Pinggy 临时隧道

Pinggy 可以不需要公网服务器,直接由实验室机主动创建一个临时公网 TCP 隧道。

实验室机上执行:

ssh -p 443 -o ServerAliveInterval=60 -o TCPKeepAlive=yes -R0:127.0.0.1:22 tcp@a.pinggy.io

成功后返回:

tcp://xxxxx.run.pinggy-free.link:39863

然后外部主机尝试:

ssh -p 39863 admin@xxxxx.run.pinggy-free.link

这条路能成功生成临时隧道,但实际 SSH 握手阶段不够稳定,出现过:

Connection timed out during banner exchange

所以它适合临时救急,不适合作为长期训练机接入方案。

方案三:ZeroTier

ZeroTier 是这次最接近成功的方案。我们创建了一个虚拟网络:

Network ID: 76fc96e498dc

实验室机加入后拿到:

10.59.120.22

本机加入后拿到:

10.59.120.1

实验室机加入命令:

"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat" join 76fc96

查看状态:

"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat" info "C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat" listnetworks

正常时可以看到:

200 info 57b2e3bc 1.16.1 ONLINE 200 listnetworks 76fc96e498d8 my-first-network ... 10.59.120.22

网页后台需要把两个节点都勾选 Authorized。这一步很重要,否则本机或实验室机可能 join OK,但拿不到虚拟 IP。

ZeroTier 打通后的排查

ZeroTier 成功后,本机可以 ping 通实验室机:

ping 10.59.120.222

结果正常:

Reply from 10.59.120.222: bytes=32 time=13ms TTL=57

但 SSH 仍然超时:

ssh admin@10.59.120.222

结果:

ssh: connect to host 10.59.120.222 port 22: Connection timed out

这说明三层网络已经通了,但 TCP 入站被拦。

在实验室机上确认 sshd 监听:

netstat -ano | findstr :22

确认 ZeroTier 网卡:

powershell -Command "Get-NetAdapter | Format-Table Name,InterfaceDescription,InterfaceIndex,Status -AutoSize"

确认网络类型:

powershell -Command "Get-NetConnectionProfile | Format-Table Name,InterfaceAlias,InterfaceIndex,NetworkCategory -AutoSize"

我们把 ZeroTier 网卡改成了 Private:

powershell -Command "Set-NetConnectionProfile -InterfaceIndex 43 -NetworkCategory Private"

并添加了防火墙规则:

netsh advfirewall firewall add rule name="OpenSSH-ZeroTier-TCP22-Subnet" dir=in action=allow protocol=TCP localport=22 remoteip=10.59.120.0/24 profile=any

powershell -Command "New-NetFirewallRule -DisplayName 'OpenSSH-ZT-Program-Subnet' -Direction Inbound -Action Allow -Program 'C:\Windows\System32\OpenSSH\sshd.exe' -Protocol TCP -LocalPort 22 -RemoteAddress 10.59.120.0/24 -Profile Any"

为了确认是否是 Windows 防火墙导致,还短暂关闭过防火墙:

netsh advfirewall set allprofiles state off

但本机访问 10.59.120.222:22 仍然超时。

这说明问题不在 Windows 自带防火墙规则,而更可能是第三方安全软件、HIPS、EDR 或网卡过滤驱动。

换端口验证

为了排除 22 端口被特殊拦截,我们把 OpenSSH 增加了一个新端口 2222。

编辑:

C:\ProgramData\ssh\sshd_config

添加:

Port 22 Port 2222

重启服务:

sc stop sshd & sc start sshd

确认监听:

netstat -ano | findstr :2222

结果:

TCP 0.0.0.0:2222 0.0.0.0:0 LISTENING TCP [::]:2222 [::]:0 LISTENING

但本机连接:

ssh -p 2222 admin@10.59.120.222

仍然超时。这进一步说明:

不是 22 端口本身的问题,而是实验室机对 ZeroTier 虚拟网卡的 TCP 入站有更底层的拦截。

管理员公钥路径的坑

Windows OpenSSH 有一个容易踩的坑。

C:\ProgramData\ssh\sshd_config 里有这段:

Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

admin 属于 Administrators 组时,公钥不会读:

C:\Users\admin\.ssh\authorized_keys

而是读:

C:\ProgramData\ssh\administrators_authorized_keys

所以如果后续要配置免密登录,公钥应该放到:

C:\ProgramData\ssh\administrators_authorized_keys

并确保权限正确。

推荐的标准接入流程

下一次从零配置,推荐按这个顺序走。

第一步:确认实验室机 SSH 正常

sc query sshd netstat -ano | findstr :22 ssh admin@127.0.0.0

只要本机回环 SSH 能进,就说明 sshd 没问题。

第二步:两台机器加入 ZeroTier

安装 ZeroTier 后,两台机器都执行:

"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat" join 76fc96e498

然后到 ZeroTier 网页后台授权两个节点。

检查:

"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat" listnetworks

两台机器都应拿到 10.59.120.x/24 这样的地址。

第三步:确认网络互通

在本机:

ping 10.59.120.22

如果 ping 通,说明 ZeroTier 网络层已经通。

第四步:放行 SSH 入站

在实验室机管理员 cmd:

netsh advfirewall firewall add rule name="OpenSSH-ZeroTier-TCP22-Subnet" dir=in action=allow protocol=TCP localport=22 remoteip=10.59.120.0/24 profile=any

netsh advfirewall firewall add rule name="OpenSSH-2222" dir=in action=allow protocol=TCP localport=2222 profile=any

第五步:如果 ping 通但 SSH 超时

如果出现:

ping 通 ssh 超时 Windows 防火墙关闭后仍超时 22 和 2222 都超时

基本可以判断为第三方安全软件或底层过滤驱动在拦截虚拟网卡入站 TCP。

这时应检查:

tasklist | findstr /i "hips security firewall defender endpoint edr"

也可以在任务管理器里查看是否存在主机防护、HIPS、EDR、安全管家、校园网安全客户端等进程。

如果能临时关闭网络防护,再测试:

ssh admin@10.59.120.222

最终结论

这次排查可以总结成一句话:

实验室机 SSH 服务本身是正常的,ZeroTier 也已经把两台机器连到了同一个虚拟网;真正阻塞的是实验室机对 ZeroTier 虚拟网卡的 TCP 入站访问。

所以后续最推荐的稳定方案是:

ZeroTier 负责组网 OpenSSH 负责远程命令行 实验室机安全软件需要明确放行 ZeroTier 网卡上的 TCP 22/2222

如果实验室机安全策略无法放开入站 TCP,备用方案是:

使用公网跳板机做反向 SSH 隧道

但这需要一台可公网访问的服务器。没有公网服务器时,ZeroTier 仍然是当前最接近长期可维护的方案。

当前项目里的实际状态

本次项目中,训练已经不依赖远程 SSH 才能继续。实验室机上的新版 6 类训练已经启动:

E:\yolo26-kuangqu\ultralytics-main

训练日志:

E:\yolo26-kuangqu\ultralytics-main\train_run.log

当前命令:

python train_mining.py --config config\train_config_expanded6_clean_refresh_heqselect_v1_5090_m_strategyfirst.yaml > train_run.log 2>&1

远程连接排障和训练可以分开处理:训练先跑,远程接入后续继续优化。这样不会因为网络问题耽误模型实验。

http://www.jsqmd.com/news/794046/

相关文章:

  • OpenClaw工作空间管理工具:自动化配置维护与AI Agent开发效率提升
  • 车载语音助手早期集成:蓝牙连接与物理按键的安全设计哲学
  • XYBot V2:基于Python的插件化微信机器人框架开发与部署指南
  • 太空采矿的工程挑战:从月球氦-3到小行星资源开采的现实路径
  • Vue 3 + TypeScript + Vite 实战:从零模仿腾讯QClaw前端架构
  • 线程崩溃了,进程也会崩溃吗?
  • 【SITS 2026 MLOps权威白皮书】:首次公开AI原生模型全生命周期管理的7大核心范式与3类不可逆风险规避指南
  • VGG改进(24):基于Deformable Convolution网络改进
  • 芯片功能验证的范式革新:从约束随机到目标驱动的智能场景生成
  • openclaw手机版安装直连方法_Topclaw完全免费使用!
  • 本地部署YakGPT:打造私有化ChatGPT前端,实现语音交互与数据安全
  • EDA技术博客写作指南:从内容创作到平台分发的实战策略
  • 中介设计模式
  • 【领域驱动设计 开篇】零 来源及学习路径
  • 视觉语言模型心智理论评估:意图理解与视角采样的能力分离现象
  • IMMACULATE框架:黑盒LLM服务的可验证审计技术
  • EDA技术演进全景:从物理验证到AI驱动的设计自动化
  • 示波器有效位数(ENOB)实战指南:从原理到选型与应用
  • IoT设备无线通信合规测试全解析
  • Oracle诉Google案:API版权与合理使用对软件互操作性的深远影响
  • 从苹果三星2016年困境看消费电子行业创新与供应链管理
  • 树莓派创意相机实战:从图像处理到嵌入式系统集成
  • DevSquad:一体化开发者工具箱,提升本地开发与调试效率
  • 数据库安全与权限管理详解
  • 《Java面试85题图解版(二)》进阶深化下篇:Redis缓存
  • 观察使用Token Plan套餐后月度AI调用成本的变化趋势
  • Java多线程:从入门到进阶
  • 构建产品级AI智能体:五层架构与审美工程实战指南
  • 鸣潮自动化终极指南:5分钟解放双手,告别重复刷图
  • [具身智能-660]:具身智能系统 三层分级架构(基于 ROS2 分布式全域组网):上位机可视化层 + 中位机 AI 决策层 + 下位机实时感知执行层三级分层架构。