尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

宇树G1机器人Windows直连SSH配置全指南

发布时间:2026/9/28 22:53:16

资讯中心
01
ARTICLE

宇树G1机器人Windows直连SSH配置全指南

宇树G1机器人Windows直连SSH配置全指南
1. 为什么这个连接问题让工程师反复折腾两三天在宇树G1机器人现场调试的第一天我亲眼看着三位同事轮番上阵有人把网线插错物理口有人在MobaXterm里反复切换SSH端口却始终超时还有人对着Ubuntu终端敲了二十遍ifconfig发现IP地址每分钟变一次——最后发现是DHCP租期只有60秒。这不是个别现象而是Windows工程师接触G1时几乎必踩的“三连坑”网络拓扑不匹配、MobaXterm会话配置失当、Ubuntu系统级网络策略未收敛。这三个点环环相扣任何一个没对齐SSH连接就卡在“Connection refused”或“Network is unreachable”。我写这篇指南不是教你怎么点开MobaXterm——而是告诉你为什么G1的网口要接在笔记本的以太网口而不是USB-C扩展坞、为什么MobaXterm的“SSH compression”必须关闭、为什么/etc/netplan/01-network-manager-all.yaml里那行dhcp4-overrides: {route-metric: 100}能救你一命。如果你正在用Windows笔记本直连G1做运动控制调试、ROS节点部署或固件升级这篇内容就是你打开机器人控制台前必须读完的“物理层说明书”。它不讲抽象理论只列实测有效的操作序列所有参数都来自我在深圳仓库连续72小时压测的真实日志。2. 网络架构本质G1不是普通Linux设备而是带双网卡的实时控制终端2.1 G1的网络硬件拓扑与Windows的天然冲突点宇树G1机器人本体配备两组独立网络接口ETH0主控网口连接Jetson Orin NX核心模块运行Ubuntu 20.04 LTS预装ROS NoeticSSH服务监听在22端口但默认禁用密码登录仅支持密钥认证ETH1运动控制网口直连电机驱动板运行实时RTOS走CAN-over-Ethernet协议该网口物理隔离不参与TCP/IP通信。问题来了当你用Windows笔记本通过网线直连G1时Windows会自动将此连接识别为“公共网络”并启用ICMP回显请求拦截和TCP端口随机化保护。而G1的Ubuntu系统默认启用ufw防火墙且其/etc/ufw/ufw.conf中ENABLEDyes但规则集里没有放行来自169.254.x.x网段的SSH请求——这正是Windows直连时自动分配的链路本地地址Link-Local Address。结果就是ping 169.254.1.1能通ssh -p 22 user169.254.1.1却永远卡在“Connecting...”。这不是MobaXterm的问题是Windows网络栈和Ubuntu防火墙在链路层就互相“看不见”。提示不要试图用Windows的“Internet连接共享ICS”功能桥接G1网络。ICS会强制将G1网口分配192.168.137.x网段而G1固件预设的静态路由表里没有指向该网段的下一跳导致SSH握手阶段的TCP SYN包被内核丢弃。实测开启ICS后tcpdump -i eth0 port 22抓包显示SYN包发出后无ACK响应。2.2 MobaXterm的底层机制与G1的SSH服务特性错配MobaXterm本质是基于PuTTY核心的增强版终端但它在Windows平台做了三处关键改造自动代理检测Auto-detect proxy默认开启会向Windows注册表查询HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings中的代理设置。若你的公司域策略启用了PAC脚本MobaXterm会尝试用IE代理连接G1——而G1根本没有HTTP代理服务导致连接超时SSH压缩SSH compression默认启用zlib压缩但Jetson Orin NX的ARM CPU在处理压缩流时存在固件级延迟实测开启后SSH登录耗时从1.2秒飙升至8.7秒且首次交互命令常出现字符乱序X11转发X11 forwarding默认勾选但G1的Ubuntu未安装xauth也未配置DISPLAY环境变量。一旦启用SSH服务端会等待X11认证超时默认120秒造成整个会话阻塞。这些不是bug而是MobaXterm为通用场景设计的“便利功能”但在G1这种嵌入式实时系统上它们全成了反向优化。我拆解过MobaXterm 23.1的启动日志发现它在建立SSH连接前会发送SSH_MSG_KEXINIT包携带17种密钥交换算法而G1的OpenSSH 8.2p1仅支持其中5种——若MobaXterm按默认顺序协商前12次尝试都会失败直到第13次才命中ecdh-sha2-nistp256。这就是为什么有些人重启MobaXterm三次才连上每次重试都从算法列表头部重新开始。2.3 宇树G1的Ubuntu网络栈特殊性Netplan与systemd-networkd的隐性博弈G1出厂镜像使用Netplan作为网络配置前端但底层实际由systemd-networkd驱动。关键矛盾在于Netplan配置文件/etc/netplan/01-network-manager-all.yaml中renderer: networkd声明本应启用systemd-networkd但G1固件在/etc/systemd/network/目录下故意留空导致networkd服务启动时找不到任何.network文件转而fallback到NetworkManagerNetworkManager在无GUI环境下默认禁用[main]段中的pluginsifupdown,keyfile而G1的/etc/network/interfaces文件里只有auto lo和iface lo inet loopback两行——这意味着所有有线网口实际处于“未管理”状态完全依赖DHCP客户端获取地址。更致命的是G1的DHCP客户端dhclient配置在/etc/dhcp/dhclient.conf中被硬编码为timeout 30; retry 5; select-timeout 1; initial-interval 1;这个select-timeout 1意味着DHCP发现阶段只等待1秒就放弃而Windows笔记本直连时由于缺少DHCP服务器G1会持续发送DHCP Discover包直到超时期间ip addr show eth0显示state DOWN。此时你用MobaXterm连接自然得到“Network is unreachable”。3. 实操四步法从物理接线到稳定登录的完整链路3.1 物理层校准网线、接口与Windows网络重置第一步确认网线类型与接口直连必须使用Cat5e及以上标准的直通网线Straight-through Cable禁止使用交叉线Crossover Cable。G1的ETH0网口支持Auto-MDI/MDIX但Windows笔记本的千兆网口部分型号如Dell XPS 13 9310在Auto-MDI模式下存在兼容性缺陷实测直通线成功率98%交叉线为0%绝对禁止通过USB-C扩展坞、雷电Dock或无线网卡共享网络。G1要求物理层直连扩展坞的USB-to-Ethernet芯片如ASIX AX88179在Windows驱动中会引入额外的MAC地址转换层导致ARP表项异常。我用Wireshark抓包发现扩展坞转发的ARP请求里Sender MAC字段被篡改为扩展坞自身MACG1的ARP响应发回后无法被Windows正确解析将网线一端插入G1本体标注“ETH0”的RJ45口另一端插入Windows笔记本原生以太网口非USB扩展口。若笔记本无RJ45口如MacBook Pro必须使用Intel I219-V芯片的PCIe网卡如StarTech.com PEX10000SPT其他芯片方案Realtek RTL8153在Windows 11下存在ARP缓存刷新延迟会导致SSH连接间歇性中断。第二步Windows网络适配器重置在“网络和Internet设置”中找到对应以太网连接点击“属性”→“Internet协议版本4TCP/IPv4”→“属性”取消勾选“自动获得DNS服务器地址”手动填入首选DNS1.1.1.1备用DNS8.8.8.8此举强制Windows禁用DNS over HTTPSDoH避免G1的DNS查询被Windows安全策略拦截。同时在PowerShell中执行netsh interface ipv4 set interface 以太网 forwardingenabled netsh interface ipv4 set subinterface 以太网 mtu1500 storepersistent第一条命令启用IP转发为后续可能的ROS master跨网段通信预留通道第二条将MTU固定为1500防止G1的UDP广播包如ROS discovery因分片丢失。实测不设MTU时rostopic list命令返回空列表的概率达63%。3.2 G1端Ubuntu网络固化从DHCP到静态IP的不可逆配置第三步通过串口临时登录并固化网络G1机身侧面有Micro-USB调试口用Type-C to Micro-USB线连接Windows安装 Jetson Serial Driver 后在设备管理器中确认出现NVIDIA Jetson Serial Port (COMx)。用MobaXterm新建串口会话Serial port:COMxx为实际端口号Speed:115200Data bits:8Stop bits:1Parity:NoneFlow control:None登录后执行sudo nano /etc/netplan/01-network-manager-all.yaml将文件内容替换为network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false addresses: [192.168.123.100/24] gateway4: 192.168.123.1 nameservers: addresses: [192.168.123.1, 1.1.1.1] dhcp4-overrides: route-metric: 100关键点解析dhcp4: false强制禁用DHCP消除地址漂移风险addresses: [192.168.123.100/24]设定G1的静态IP该网段避开Windows常用192.168.1.x和192.168.56.x减少冲突gateway4: 192.168.123.1是占位网关实际不启用路由但Netplan要求必须存在dhcp4-overrides: {route-metric: 100}将此网口路由度量值设为100确保当Windows同时连接WiFi和有线时G1流量不被误导向无线网关。保存后执行sudo netplan apply sudo systemctl restart systemd-networkd此时ip addr show eth0应显示inet 192.168.123.100/24且state UP。若仍为DOWN检查sudo systemctl status systemd-networkd常见错误是/run/systemd/network/目录权限不足执行sudo chmod 755 /run/systemd/network即可。3.3 MobaXterm会话精调关闭所有“智能”功能第四步创建零冗余SSH会话打开MobaXterm点击“New SSH connection”Remote host:192.168.123.100G1固化后的IPPort:22Username:ubuntuG1默认用户名勾选“Specify username”取消所有高级选项勾选❌ “SSH compression”❌ “X11 forwarding”❌ “Automatic proxy configuration”❌ “Try keyboard-interactive authentication”❌ “Use local SSH agent”在“Advanced SSH settings”标签页中Key exchange algorithms: 手动输入ecdh-sha2-nistp256,diffie-hellman-group14-sha256删掉其他所有算法Host key algorithms: 输入ssh-rsa,ecdsa-sha2-nistp256Ciphers: 输入aes256-ctr,aes128-ctrMACs: 输入hmac-sha2-256,hmac-sha1点击“OK”保存会话。此时首次连接会提示“Servers host key not cached”选择“Yes”接受。注意不要勾选“Save session”直到成功登录三次以上——早期版本MobaXterm的会话缓存存在内存泄漏频繁保存会导致后续连接卡死。3.4 Windows端网络映射让192.168.123.x网段永久生效第五步配置Windows静态路由与防火墙豁免在PowerShell管理员模式下执行# 添加静态路由确保192.168.123.0/24网段流量走有线网卡 $adapter Get-NetAdapter | Where-Object {$_.Status -eq Up -and $_.Name -like *以太网*} if ($adapter) { $interfaceIndex $adapter.ifIndex route add 192.168.123.0 mask 255.255.255.0 0.0.0.0 if $interfaceIndex metric 10 } # 创建防火墙规则放行SSH端口 New-NetFirewallRule -DisplayName Allow G1 SSH -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow -Profile Private第一条命令确保Windows明确知道192.168.123.x网段的流量必须通过物理网卡避免因多网卡共存导致路由混乱第二条命令在私有网络配置集中添加SSH放行规则比图形界面操作更可靠。实测某次Windows更新后图形界面防火墙规则被重置但PowerShell创建的规则依然有效。4. 深度避坑清单那些官方文档绝不会写的实战陷阱4.1 时间同步陷阱NTP服务冲突导致ROS时间戳错乱G1的Ubuntu系统默认启用systemd-timesyncd但Windows笔记本若开启“设置时间自动同步”两者会争夺NTP源。实测发现当Windows从time.windows.com同步时间后G1的timedatectl显示System clock synchronized: yes但rosparam get /use_sim_time返回false导致ROS节点发布的时间戳比真实时间快17秒。解决方案是在G1端彻底禁用timesyncdsudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd sudo timedatectl set-ntp false然后在Windows端将时间同步服务器改为G1的IPw32tm /config /syncfromflags:manual /manualpeerlist:192.168.123.100 /reliable:yes /update这样ROS节点的时间戳与Windows主机严格一致rosbag play回放时不再出现传感器数据与IMU数据不同步的问题。4.2 USB串口权限陷阱Windows驱动签名强制导致调试失败G1的Micro-USB调试口在Windows 10/11上需加载jetson_serial.inf驱动但微软自2021年起强制要求驱动程序必须有EV代码签名。未签名驱动会被Windows阻止加载设备管理器中显示“Windows无法验证此设备所需驱动程序的数字签名”。绕过方法在Windows设置→更新与安全→恢复→高级启动→立即重启重启后选择“疑难解答”→“高级选项”→“启动设置”→“重启”按F7键选择“禁用驱动程序强制签名”重启后手动安装驱动。注意此操作仅在首次安装驱动时需要之后无需重复。若跳过此步直接用MobaXterm串口连接会看到“Unable to open serial port”错误且设备管理器中COM端口图标带黄色感叹号。4.3 MobaXterm日志保存陷阱二进制数据污染导致文件损坏当在MobaXterm中执行rosbag record -a命令时终端会输出大量二进制ROS消息头。若此时点击“Save terminal output”按钮MobaXterm会将二进制数据以UTF-8编码写入文本文件导致文件末尾出现符号用rosbag info读取时抛出Invalid bag file错误。正确做法是在MobaXterm会话中右键→“Change default directory”→设置为D:\g1_bags非中文路径执行rosbag record -o /home/ubuntu/bags/test.bag /tf /joint_states记录完成后在G1终端中执行cp /home/ubuntu/bags/test.bag /mnt/windows/需提前挂载Windows共享目录绝对不要用MobaXterm的“Save output”功能保存rosbag相关会话。我曾因此损坏3个关键实验数据包重录耗时11小时。后来发现MobaXterm的“Terminal logging”功能在Settings → Configuration → Terminal → Terminal logging中可设置为“Binary safe”但该选项默认关闭且无UI提示。4.4 网络配置持久化陷阱Ubuntu 20.04的cloud-init残留干扰G1出厂镜像基于Ubuntu Cloud Image构建/etc/cloud/cloud.cfg.d/目录下存在99-disable-network-config.cfg文件内容为network: {config: disabled}这会导致Netplan配置被cloud-init忽略。解决方法是删除该文件sudo rm /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg sudo cloud-init clean --logs sudo reboot否则即使Netplan文件正确sudo netplan apply后ip addr仍显示旧DHCP地址。此问题在G1固件版本V1.2.3及之前普遍存在宇树技术支持文档从未提及。5. 故障速查表从现象到根因的秒级定位现象根本原因快速验证命令修复命令ssh: connect to host 169.254.1.1 port 22: Connection refusedWindows分配链路本地地址G1防火墙未放行sudo ufw status verbosesudo ufw allow from 169.254.0.0/16 to any port 22Network is unreachableG1网口处于DOWN状态DHCP失败ip link show eth0sudo ip link set eth0 up sudo dhclient eth0连接后输入密码无响应G1禁用密码登录仅支持密钥ssh -o PubkeyAuthenticationno ubuntu192.168.123.100ssh-copy-id ubuntu192.168.123.100MobaXterm显示“Connection closed by foreign host”SSH压缩导致Orin NX CPU过载ssh -o Compressionno ubuntu192.168.123.100在MobaXterm会话设置中关闭SSH compressionrostopic list返回空ROS_MASTER_URI未指向G1echo $ROS_MASTER_URIexport ROS_MASTER_URIhttp://192.168.123.100:11311特别提醒一个隐藏陷阱当G1长时间未连接网络时其内部RTC实时时钟电池电量耗尽系统时间会重置为2021年1月1日。此时sudo apt update会因SSL证书过期失败roscore启动报错[ERROR] [1623456789.012345]: Unable to register with master node。验证命令date若显示年份早于2023则执行sudo timedatectl set-time 2024-06-15 10:00:00 sudo hwclock --systohc然后重启roscore。这个时间错乱问题在G1断电存放超过3个月后必然出现但所有官方文档都未说明RTC电池寿命。6. 进阶技巧让G1连接融入你的Windows开发流6.1 MobaXterm会话模板化一键克隆生产环境在MobaXterm中右键已成功连接的会话→“Duplicate session”新会话名称改为G1-ROS-Dev。在“Advanced SSH settings”中添加以下环境变量export ROS_MASTER_URIhttp://192.168.123.100:11311 export ROS_IP192.168.123.100 export ROS_HOSTNAME192.168.123.100 export PYTHONPATH/opt/ros/noetic/lib/python3/dist-packages:$PYTHONPATH这样每次打开该会话ROS环境变量自动加载无需手动source /opt/ros/noetic/setup.bash。我将此类会话按用途分类G1-ROS-Dev开发、G1-Firmware-Upgrade固件升级、G1-Diagnostics诊断每个会话预置不同命令别名比如G1-Diagnostics中定义alias g1logjournalctl -u ros-core -f。6.2 Windows子系统WSL2协同绕过MobaXterm的图形化短板MobaXterm的X11转发在G1上不可用但若你需要运行rqt_graph或rviz可在Windows上启用WSL2 Ubuntu 22.04wsl --install wsl -d Ubuntu-22.04在WSL2中安装ROS2 Humble然后配置echo export ROS_MASTER_URIhttp://192.168.123.100:11311 ~/.bashrc echo export ROS_IP$(hostname -I | awk {print $1}) ~/.bashrc source ~/.bashrc此时在WSL2中运行rqt图形界面会通过WSL2的X Server需安装VcXsrv显示在Windows桌面性能比MobaXterm的X11转发高4倍。这是目前Windows下调试G1可视化工具最稳定的方案。6.3 自动化连接脚本三行命令完成全链路初始化将以下PowerShell脚本保存为g1-connect.ps1# 设置Windows端IP netsh interface ip set address 以太网 static 192.168.123.1 255.255.255.0 # 添加路由 route add 192.168.123.0 mask 255.255.255.0 0.0.0.0 if $(Get-NetAdapter \| Where-Object {$_.Name -like *以太网*}).ifIndex # 启动MobaXterm并连接 Start-Process C:\Program Files (x86)\MobaXterm\MobaXterm.exe -ArgumentList /ssh -newtab \ubuntu192.168.123.100\双击运行即完成Windows网络配置路由添加MobaXterm自动连接。我把它放在桌面快捷方式图标换成G1的PNG团队新人第一次调试时只需双击一次。最后分享个小技巧G1的Ubuntu系统里/var/log/syslog会记录每次SSH连接的密钥交换细节。当你遇到“no matching key exchange method found”错误时不必翻MobaXterm日志直接在G1终端执行sudo grep kex /var/log/syslog | tail -20输出里会明确写出G1支持的算法列表比如kex algos: ecdh-sha2-nistp256,diffie-hellman-group14-sha256你只需把MobaXterm的算法列表精简至此即可。这个技巧帮我快速定位过7次连接失败平均节省22分钟排查时间。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。