news 2026/5/11 5:59:31

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实验室显卡与本机远程连接复盘:直连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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 5:58:33

52. 人工智能实战:Embedding 模型升级怎么不翻车?从前期召回波动到双索引、离线评测与灰度切换

人工智能实战:Embedding 模型升级怎么不翻车?从前期召回波动到双索引、离线评测与灰度切换 一、问题场景:换了更强的 Embedding,RAG 反而答得更差 RAG 系统上线后,团队经常会想升级 Embedding 模型。 理由很充分: 1. 新模型维度更高 2. 多语言能力更好 3. 排行榜效果更…

作者头像 李华
网站建设 2026/5/11 5:55:37

构建产品级AI智能体:五层架构与审美工程实战指南

1. 项目概述:从“人设模板”到“产品级Agent工厂”的跃迁如果你最近也在研究如何让AI Agent(智能体)变得更聪明、更可靠,而不是一个只会说漂亮话的“实习生”,那你可能和我一样,已经厌倦了那些满天飞的“人…

作者头像 李华
网站建设 2026/5/11 5:55:36

Docker镜像逆向分析:dfimage工具原理、实战与CI/CD应用

1. 项目概述:从镜像反推Dockerfile的实用工具在容器化开发和运维的日常工作中,我们经常会遇到一个经典场景:拿到一个现成的Docker镜像,却找不到它的构建蓝图——Dockerfile。这可能是接手一个遗留项目,或是分析一个第三…

作者头像 李华
网站建设 2026/5/11 5:47:25

软件设计原则之OCP开闭原则

(OCP) 开闭原则 Open Closed Principle核心原则对扩展开放,对修改关闭。场景描述还是拿 UserInfo 进行举例。在开发过程中我们需要对我们使用的对象进行多步的组合操作,比如这里要打印账户和密码信息。常规的方式就是在外部直接进行调用,或者…

作者头像 李华
网站建设 2026/5/11 5:46:07

ARM TLB指令解析:RVAALE1OS与RVAALE1OSNXS对比与应用

1. ARM TLB指令深度解析:TLBIP RVAALE1OS与TLBIP RVAALE1OSNXS在ARMv9架构的虚拟化环境中,TLB(Translation Lookaside Buffer)维护指令的性能直接影响内存访问效率。作为系统程序员,理解TLBIP RVAALE1OS和TLBIP RVAALE…

作者头像 李华
网站建设 2026/5/11 5:46:07

【OC】NSTimer

NSTimer 文章目录NSTimer 为什么定时器停不下来?NSTimer 基础RunLoopNSTimer 的循环引用实战:无限轮播图的完整 Timer 方案为什么定时器停不下来? 我曾经做过一个定时器按钮,但是里面有这样一个问题:连续点击几次「开…

作者头像 李华