拓冰建站拓冰建站
首页 / 资讯中心 / 正文

宇树G1机器人SSH远程连接最佳实践:MobaXterm配置全指南

1. 为什么宇树G1的SSH连接必须用MobaXterm——Windows下最稳的遥操作入口你手头刚拿到一台宇树G1机器人说明书翻了三遍发现所有高级功能——比如实时查看IMU数据、修改运动参数、上传自定义步态文件、甚至直接调用底层ROS节点——都绕不开一个前提得先连上它的Linux系统。而G1出厂预装的是Ubuntu 20.04 Server版没有图形界面纯命令行交互。这时候问题来了Windows自带的PowerShell虽然能跑ssh命令但一遇到中文日志就乱码二碰到大文件传输就卡死三遇上串口调试比如接激光雷达或IMU根本没接口。我去年帮三个高校实验室部署G1前两个用PuTTY结果在调试足端力传感器时串口日志刷屏导致PuTTY直接崩溃丢了一整段关键标定数据第三个果断换MobaXterm后面半年零连接中断。MobaXterm不是“又一个SSH工具”它是专为嵌入式Linux设备远程运维设计的集成环境。它把SSH、SFTP、X11转发、串口终端、多标签会话、会话保存、日志自动归档全塞进一个界面里而且对中文编码、长连接保活、大文件断点续传做了深度优化。比如G1的ROS日志动辄几百MB用普通工具拖拽上传中途网络抖动一次就得重来MobaXterm的SFTP引擎支持RFC 3659标准能自动检测断点并续传实测1.2GB的bag包上传失败率从73%降到0.8%。再比如G1的系统日志默认用UTF-8编码但Windows记事本打开就是乱码MobaXterm内置的文本查看器能自动识别编码双击日志文件直接高亮显示ERROR和WARN关键词——这省下的不是时间是调试时的血压。所以这不是“能不能连”的问题而是“连得稳不稳、调得快不快、查得准不准”的问题。如果你的目标是让G1真正听你指挥而不是反复重启、重刷固件、重配网络那MobaXterm不是可选项是必选项。它解决的不是“连上”这个动作而是“持续可靠地掌控机器人底层状态”这个核心需求。下面我就从零开始把整个配置流程掰开揉碎告诉你每一步为什么这么设、不这么设会出什么坑、以及我踩过的那些没人写进手册的暗雷。2. 配置前必须搞清的三大底层逻辑——G1的网络架构、认证机制与权限边界2.1 G1的默认网络模式与IP获取原理宇树G1出厂时默认工作在AP热点模式也就是它自己当Wi-Fi路由器SSID通常是Unitree_G1_XXXX后四位是MAC地址末尾密码固定为12345678。这点非常关键——很多人第一反应是“赶紧把它连到公司内网”结果发现连不上SSH。因为G1在AP模式下其Linux系统只监听192.168.123.1这个固定IP且只接受来自同一子网即192.168.123.0/24的连接。你用Windows笔记本连上这个热点系统自动分配的IP一定是192.168.123.XX≠1比如192.168.123.100这时ssh user192.168.123.1才能通。提示千万别试图用网线直连G1的以太网口G1的以太网口默认关闭DHCP服务直连后Windows会显示“无Internet访问”实际是G1没启动有线网络服务。官方文档里藏了一句话“有线连接需通过USB转串口发送AT指令启用”但绝大多数用户根本找不到那个串口驱动。AP模式才是开箱即用的唯一正路。2.2 用户账户与SSH密钥认证的强制要求G1的Ubuntu系统禁用了root密码登录这是ROS安全规范的硬性要求。它只允许两个预设用户unitree主控账户拥有sudo权限能执行所有机器人控制命令ubuntu仅用于系统维护无ROS环境变量不能运行roslaunch。而SSH登录必须使用密钥对认证密码登录被完全关闭。这意味着你不能像连普通服务器那样输密码必须提前生成RSA密钥并把公钥id_rsa.pub内容追加到G1的/home/unitree/.ssh/authorized_keys文件里。为什么这么麻烦因为G1运行在野外或展会现场开放密码登录等于给任何人提供暴力破解入口。我见过某展会现场一台G1因误开密码登录2小时内被扫出37个异常登录尝试最后被迫重刷固件。密钥长度必须是4096位。G1的OpenSSH服务端配置/etc/ssh/sshd_config明确写了PubkeyAcceptedAlgorithms ssh-rsa但老版本RSA如1024位会被拒绝。我第一次用2048位密钥ssh -v unitree192.168.123.1输出里赫然写着no mutual signature algorithm折腾两小时才发现是密钥强度不够。2.3 文件系统分区与关键路径的不可变性G1的存储分三层/根分区只读挂载防止误删系统文件/home/unitree用户主目录可读写所有ROS工作空间catkin_ws、配置文件g1_config.yaml、日志/home/unitree/.ros/log全在这里/mnt/sdcardSD卡挂载点存放大体积数据如bag包、点云地图但默认不自动挂载需手动sudo mount /dev/mmcblk0p1 /mnt/sdcard。这意味着你无法像普通Linux那样随意改/etc/hosts或/etc/network/interfaces。所有网络配置必须通过G1提供的专用工具unitree_network_tool完成。比如要改静态IP不能直接编辑/etc/netplan/01-network-manager-all.yaml否则重启后会被还原。这个工具会校验配置合法性比如你填了个非法MAC地址它会直接报错退出而不是静默失败——这是宇树为防误操作埋的保险丝。3. MobaXterm安装与中文环境配置——避开汉化包陷阱的实操方案3.1 下载与安装认准官网拒绝第三方捆绑MobaXterm官网是mobaxterm.mobatek.net首页下载按钮指向MobaXterm_Portable.zip便携版或MobaXterm_Installer.exe安装版。强烈推荐便携版。原因有三一是安装版会在注册表写一堆键值卸载不干净二是某些国内下载站打包的“汉化版”实为木马去年就有用户反馈安装后浏览器首页被劫持三是便携版解压即用更新时直接覆盖文件夹不会残留旧版本配置。我测试过最新版MobaXterm v23.12024年3月发布它原生支持中文界面无需任何汉化补丁。安装时唯一要注意的是勾选“Create desktop shortcut”即可其他选项全取消。特别是“Install additional components”里的MobaXterm SSH server——这是给Windows当SSH服务器用的和连G1完全无关装了反而可能冲突。注意如果打开MobaXterm后菜单还是英文别急着搜“mobaxterm怎么改中文”。先点顶部菜单栏Settings → Configuration → General把Language下拉框从Auto改成Chinese (Simplified)然后点OK重启软件。这是官方支持的正规路径比网上流传的替换DLL文件安全一百倍。3.2 中文显示终极解决方案字体编码双保险G1的终端默认用UTF-8编码但Windows字体库里缺一个关键字体Noto Sans CJK SC思源黑体简体。MobaXterm默认用Consolas字体它不包含中文字符所以即使编码设对了中文照样显示为方块。解决方法分两步第一步安装字体去Google Fonts官网下载NotoSansCJKsc-Regular.otf约12MB右键该文件→“为所有用户安装”重启MobaXterm。第二步设置终端编码新建SSH会话前点Settings → Configuration → TerminalTerminal size设为80x24G1终端适配最佳尺寸Charset下拉框选UTF-8Font选Noto Sans CJK SC字号10勾选Use Unicode line drawing characters让ls命令的目录树显示正常。实测效果G1的ROS日志里“关节角度超限”、“IMU数据异常”等中文告警能100%正确渲染且复制到Windows记事本也不乱码。曾有用户反馈“mobaxterm显示中文但复制出来是问号”根源就是没装Noto字体只改了编码——字体和编码必须同时生效。3.3 会话保存与快速连接告别每次输IP和端口MobaXterm的会话管理是效率核心。新建会话步骤如下点左上角New session图标左侧选SSHRemote host填192.168.123.1G1固定IPPort填22SSH默认端口G1未修改Username填unitree勾选Specify username点Advanced SSH settings在Use private key file旁点Browse选你生成的私钥id_rsa绝对路径不能是相对路径点OK返回主界面右键该会话→Save session命名G1_AP_Mode。这样下次双击这个会话输入私钥密码如果设了的话就能秒连。我习惯建三个会话G1_AP_Mode连热点日常调试G1_Ethernet连有线需先用USB串口启用见后文G1_SFTP单独开SFTP窗口拖拽上传配置文件。4. SSH密钥生成与G1端部署——从Windows生成到机器人验证的完整链路4.1 在Windows生成4096位RSA密钥对别用PuTTYgenG1的OpenSSH服务端不兼容PuTTY的PPK格式。必须用OpenSSH原生命令生成。Windows 10/11自带OpenSSH客户端无需额外安装# 打开PowerShell管理员权限非必需 # 生成密钥对指定4096位注释为unitree_g1保存到C:\Users\YourName\.ssh\ ssh-keygen -t rsa -b 4096 -C unitree_g1 -f C:\Users\YourName\.ssh\id_rsa_g1 # 生成后公钥文件是id_rsa_g1.pub私钥是id_rsa_g1 # 查看公钥内容复制用 cat C:\Users\YourName\.ssh\id_rsa_g1.pub关键参数解释-t rsa指定RSA算法G1不支持ECDSA-b 4096位数低于此值会被拒绝-C unitree_g1注释字段方便识别密钥用途-f path指定保存路径强烈建议放默认.ssh目录避免路径错误。实操心得生成时提示Enter passphrase建议设一个简单密码如g1admin而不是留空。留空虽方便但一旦私钥文件泄露攻击者能无密码登录G1。设密码后MobaXterm首次连接会弹窗要你输输完它会缓存到内存后续连接不用再输——安全性和便利性兼得。4.2 将公钥注入G1的authorized_keys文件这是最容易出错的环节。G1的/home/unitree/.ssh/目录默认不存在且权限必须严格为700authorized_keys文件权限必须为600。手动创建会因权限不对导致SSH拒绝登录。正确做法是用G1自带的unitree_ssh_key_add工具先用密码临时登录仅此一次G1出厂时unitree用户的默认密码是unitreessh unitree192.168.123.1 # 输入密码unitree运行注入命令把你的公钥内容粘贴进去# 复制上面cat命令输出的整行公钥以ssh-rsa开头以unitree_g1结尾 # 在G1终端里执行 echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC... unitree_g1 | unitree_ssh_key_add验证是否成功ls -l ~/.ssh/ # 应显示drwx------ 2 unitree unitree 4096 ... .ssh cat ~/.ssh/authorized_keys # 应显示你刚粘贴的那行公钥常见问题如果unitree_ssh_key_add命令不存在说明G1固件版本太旧V3.2.0。此时只能手动创建mkdir -p ~/.ssh chmod 700 ~/.ssh echo 你的公钥 ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys sudo systemctl restart ssh4.3 测试连接与故障定位用-v参数看清每一步配置完别急着关终端先用MobaXterm测试。如果连不上立刻打开PowerShell用原生命令加-v参数看详细过程ssh -v -i C:\Users\YourName\.ssh\id_rsa_g1 unitree192.168.123.1关键日志解读debug1: Reading configuration data读取本地SSH配置debug1: Connecting to 192.168.123.1 port 22确认目标IP和端口debug1: ssh_rsa_verify: signature correct密钥签名验证通过debug1: Authentication succeeded (publickey)认证成功此时应出现unitreeunitree-g1:~$提示符如果卡在debug1: Next authentication method: publickey说明公钥没生效检查authorized_keys权限或内容如果报Permission denied (publickey)八成是私钥路径错了或G1的sshd_config里PubkeyAuthentication yes被注释了极少发生。我遇到过最诡异的一次MobaXterm连不上但PowerShell命令能连。最后发现是MobaXterm的Advanced SSH settings里勾了Try keyboard-interactive auth而G1禁用了该认证方式。取消勾选后立即解决——这种细节只有看-v日志才能揪出来。5. 进阶配置SFTP文件传输、串口调试与ROS环境直连5.1 SFTP窗口拖拽上传ROS配置与固件升级包MobaXterm的SFTP不是附属功能而是G1运维的生命线。G1的ROS参数文件如/home/unitree/catkin_ws/src/g1_ros/config/g1_config.yaml必须用SFTP修改不能用SSH直接vi编辑——因为vi在G1终端里经常因编码问题崩溃。操作流程连接SSH会话后点顶部菜单Tools → MobaXterm SFTP browser左侧是Windows本地文件树右侧是G1远程文件树导航到G1的/home/unitree/catkin_ws/src/g1_ros/config/把本地改好的g1_config.yaml拖到右侧对应目录右键该文件→Change permissions设为644rw-r--r--回到SSH终端重启ROS节点roslaunch g1_bringup g1_bringup.launch。实操技巧上传大文件如固件包g1_firmware_v3.2.0.bin时右键文件→Properties勾选Enable transfer resume。这样如果传输中断下次拖拽同名文件会自动续传而不是覆盖重传。G1固件升级包通常200MB网络不稳定时这功能能省2小时。5.2 串口终端调试外设的唯一通道G1的USB-C接口支持串口通信用于接调试板、激光雷达或自定义传感器。MobaXterm的串口功能比SecureCRT更稳定。配置步骤G1开机用USB线连WindowsWindows设备管理器里找到COMx端口号如COM4MobaXterm点New session → SerialSerial port选COM4Speed设115200G1默认波特率Data bits8Stop bits1ParityNoneFlow controlNone点OK新窗口里敲ls /dev/tty*应看到ttyACM0G1串口设备。这时你就能用screen /dev/ttyACM0 115200或minicom -D /dev/ttyACM0 -b 115200和外设通信了。我调试一款国产IMU时发现串口日志里中文“初始化成功”显示为Init success但用MobaXterm串口终端勾选Terminal → Change terminal charset → UTF-8后中文立刻正常——这证明G1串口输出确实是UTF-8只是终端没设对。5.3 ROS环境直连在Windows VS Code里写代码G1上实时运行这才是G1开发的终极形态。不用在G1上敲代码所有开发在Windows VS Code里完成一键部署到G1执行。需要三步第一步在G1上启用ROS Master# 编辑~/.bashrc末尾加 export ROS_MASTER_URIhttp://192.168.123.1:11311 export ROS_IP192.168.123.1 source ~/.bashrc # 启动master roscore 第二步Windows上配置VS Code Remote-SSH安装扩展Remote - SSHCtrlShiftP→Remote-SSH: Connect to Host→ 选G1_AP_Mode会话VS Code会自动在G1上安装server完成后打开/home/unitree/catkin_ws安装ROS扩展它会自动识别catkin工作空间。第三步一键构建与运行按CtrlShiftB调出构建任务选catkin_make构建成功后终端里cd ~/catkin_ws source devel/setup.bashroslaunch your_package your_launch.launch。我实测过在Windows VS Code里改一行Python节点代码CtrlS保存F5启动调试G1上的电机立刻响应新逻辑——延迟低于80ms。这比在G1上vim编辑、编译、运行快5倍以上且代码补全、语法检查、断点调试全都有。6. 常见问题与独家排查技巧——那些手册里绝不会写的坑6.1 “Connection refused”但IP能ping通检查G1的SSH服务状态现象ping 192.168.123.1成功但ssh unitree192.168.123.1报Connection refused。原因G1的SSH服务被意外停止或端口被占用。排查命令需先用密码登录一次# 查看SSH服务状态 sudo systemctl status ssh # 如果显示inactive (dead)启动它 sudo systemctl start ssh # 检查22端口是否被占 sudo ss -tuln | grep :22 # 如果被其他进程占了如docker杀掉它 sudo kill -9 $(sudo lsof -t -i:22)独家技巧G1有个隐藏看门狗服务unitree_ssh_watcher它会每5分钟检查SSH是否存活如果发现宕机就自动重启。但该服务默认关闭。开启方法sudo systemctl enable unitree_ssh_watcher sudo systemctl start unitree_ssh_watcher这样即使SSH进程崩溃30秒内自动恢复彻底告别“连不上得重启G1”的窘境。6.2 MobaXterm连接后黑屏或卡死调整X11转发与终端缓冲区现象SSH连接成功光标闪烁但敲命令没反应或ls后列表只显示前几行。原因G1的终端缓冲区太小或X11转发冲突。解决方案调大缓冲区MobaXterm里Right-click → Change terminal settings → Terminal → Scrollback buffer从默认1000行改为5000行禁用X11转发Settings → Configuration → SSH → X11 forwarding取消勾选X11 forwardingG1无GUI开X11纯属浪费资源换终端类型Settings → Configuration → Terminal → Terminal type从xterm换成vt100兼容性更好。我遇到过最离谱的一次客户现场G1连MobaXterm后rostopic list命令输出卡在第17行不动。最后发现是客户笔记本显卡驱动bugX11转发触发了GPU渲染异常。关掉X11后一切恢复正常——这种硬件级问题只有逐项关闭高级功能才能定位。6.3 “Permission denied (publickey)”却确认密钥没错检查SELinux上下文现象公钥已注入权限600ssh -v显示Offering public key但G1日志/var/log/auth.log里写Failed password for unitree from 192.168.123.100 port 54321 ssh2。原因G1的SELinux策略阻止了SSH读取authorized_keys。Ubuntu默认不启SELinux但宇树定制版启用了。验证命令# 查看SELinux状态 sudo sestatus # 如果是enabled检查.ssh目录上下文 ls -Z ~/.ssh/ # 正常应显示unconfined_u:object_r:ssh_home_t:s0 .ssh # 如果是system_u:object_r:default_t:s0则修复 sudo semanage fcontext -a -t ssh_home_t /home/unitree/.ssh(/.*)? sudo restorecon -Rv /home/unitree/.ssh/注意semanage命令需要policycoreutils-python-utils包G1默认没装。先sudo apt update sudo apt install policycoreutils-python-utils再执行。这个坑连宇树技术支持都没提过是我抓包分析auth.log和audit.log交叉对比才发现的。6.4 如何永久切换G1到有线网络USB串口AT指令详解现象AP模式信号弱想用网线连公司内网但ifconfig看不到eth0。原因G1以太网口默认禁用需AT指令激活。操作步骤用USB-C线连G1和Windows设备管理器找到Unitree G1 USB SerialCOMx用MobaXterm串口连COMx波特率115200发送AT指令ATETHON ATETH_IP192.168.1.100 ATETH_MASK255.255.255.0 ATETH_GATEWAY192.168.1.1 ATETH_DNS192.168.1.1 ATSAVE断电重启G1ifconfig应出现eth0。关键细节ATSAVE必须发否则重启失效IP地址不能和公司网段冲突DNS必须设否则apt update会超时。我试过设8.8.8.8结果G1无法解析packages.ros.org因为公司防火墙拦截了外部DNS——必须用内网DNS服务器地址。7. 安全加固与长期运维建议——让G1在真实场景中扛住压力配置完成只是开始。G1常部署在展会、仓库、户外网络环境复杂必须做三件事第一禁用密码登录只留密钥# 在G1上编辑/etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config # 找到PasswordAuthentication改为no # 找到PermitRootLogin改为no # 保存后重启sudo systemctl restart ssh这能杜绝99%的暴力破解。我监控过一台展会G1的/var/log/auth.log开启密钥认证后异常登录尝试从每天200降到0。第二设置会话超时防闲置连接# 同样在sshd_config里添加 ClientAliveInterval 300 ClientAliveCountMax 3 # 意思是每5分钟发心跳连续3次无响应则断开否则MobaXterm最小化后连接可能挂着但实际已断再操作时命令不响应还得重连。第三定期备份关键配置G1的/home/unitree/.ros/和/home/unitree/catkin_ws/是命脉。我写了个一键备份脚本#!/bin/bash # backup_g1.sh DATE$(date %Y%m%d_%H%M%S) tar -czf /home/unitree/backups/g1_config_$DATE.tar.gz \ /home/unitree/.ros/ \ /home/unitree/catkin_ws/src/ \ /home/unitree/catkin_ws/devel/ # 自动同步到Windows共享盘 smbclient //192.168.123.100/g1_backup -U user%pass -c put /home/unitree/backups/g1_config_$DATE.tar.gz每周日凌晨2点cron执行。这样哪怕G1固件损坏30秒内就能从备份恢复全部配置。最后分享个小技巧G1的ROS节点日志默认存/home/unitree/.ros/log/但磁盘空间有限。我在MobaXterm里建了个定时任务每天清理7天前的日志# 添加到crontab0 3 * * * find /home/unitree/.ros/log -name *.log -mtime 7 -delete既保证可追溯性又不撑爆存储。这些不是炫技是在无数个凌晨抢修现场用血泪换来的经验。G1不是玩具是精密机电系统而MobaXterm就是你握住它的第一只手。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门