ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

宇树G1机器人SSH远程调试与MobaXterm配置实战指南

宇树G1机器人SSH远程调试与MobaXterm配置实战指南 1. 宇树G1机器人联网调试的整体思路宇树G1作为一台四足人形平台出厂时内部跑着一套基于Linux的实时控制栈开发者想改参数、跑自定义策略、抓传感器数据绕不开的第一道坎就是把它接入自己的开发网络。很多人拿到机器后第一反应是插网线、开浏览器结果发现根本没有图形界面可点这时候SSH就成了唯一靠谱的入口。我前后在几台G1上做过网络配置和远程调试踩过的坑主要集中在三块网段对不上导致根本ping不通、SSH密钥权限被系统拒绝、以及MobaXterm会话配置里几个默认选项和机器人端不兼容。这篇就把这套流程从头到尾捋一遍包括MobaXterm的安装汉化、会话建立、密钥配置、网络抓包调试以及那些文档里不会写的细节。先说清楚这套方案适合谁。如果你手上有一台G1想用笔记本远程登录进去看日志、传文件、跑脚本或者你正在做多机协同、需要批量管理几台机器人那这篇的内容基本可以直接抄。就算你之前只用过PuTTY或者系统自带的终端跟着走一遍也能把MobaXterm这套工具链用起来。核心关键词就几个宇树G1、SSH连接、MobaXterm配置、网络调试下面所有内容都围绕它们展开。在动手之前有几个基础概念得先对齐不然后面容易懵。SSH本质上是加密的远程登录通道机器人端跑一个sshd服务在监听22端口你的电脑作为客户端去连它。MobaXterm则是一个Windows下的终端工具箱把SSH、SFTP、X11转发、串口、网络工具全塞进一个界面对机器人调试这种需要同时开好几个会话的场景特别友好。网络调试这块G1内部各模块之间走的是UDP通信想看清数据流就得在机器人端或者中间节点上抓包这也是后面会重点讲的部分。提示G1的固件版本不同默认网络配置和开放端口可能有差异。动手前先用网线直连或者串口登录确认一下当前IP别上来就改配置改错了可能连串口都进不去。2. MobaXterm安装与中文环境配置2.1 下载渠道与版本选择MobaXterm分两个版本Home Edition免费Professional收费。个人调试用Home版完全够功能上唯一明显的限制是会话数量但对单台或几台G1来说根本用不到上限。下载直接去官网认准mobaxterm.mobatek.net这个域名别从乱七八糟的下载站拿那些站经常捆绑一堆东西。下载下来是一个zip包解压后直接运行exe就能用属于绿色软件不用装。版本号方面建议用20以上的版本老版本对新的加密算法支持不好连某些Linux发行版会报算法不匹配。我目前用的是23.x稳定。如果你在win7上跑得注意新版可能不支持win7最高用到20.x左右再高会提示系统版本不够。这个在热词里也有人问过win7装ssh的问题其实win7自带的ssh客户端版本太老直接用MobaXterm内置的就行不用折腾系统组件。2.2 汉化设置与界面调整MobaXterm原生是英文界面但内置了多语言支持不用去下什么汉化包。操作路径是打开软件后点Settings菜单找到Configuration在General标签页里有个Language下拉框选Chinese Simplified重启软件就是中文了。热词里搜“mobaxterm如何设置中文”“mobaxterm怎么改中文”的人特别多其实就这一步不用装额外的东西。界面调整还有几个实用项。字体建议改成等宽字体比如Consolas或者JetBrains Mono字号14左右长时间看日志不累。终端配色可以在Settings里的Terminal标签页调我习惯用深色背景配浅色文字对比度高。另外把“Copy on select”打开选中即复制省得每次右键。这些设置改完会保存在MobaXterm.ini里换电脑直接把ini拷过去就行。2.3 会话保存与日志记录MobaXterm的会话管理是它的强项。新建一个SSH会话后在Session settings里可以给它起名字、设图标、分组。我一般按机器人编号分组比如G1-01、G1-02每台下面再分“控制终端”“文件传输”“抓包”几个会话。这样多台机器切换的时候不会乱。日志记录这个功能一定要开。在会话设置里找到Terminal settings勾选“Log terminal output to file”指定一个目录。G1调试过程中经常需要回溯之前的输出比如某个报错是什么时候出现的、参数改之前是什么值有日志就能直接翻。日志文件默认按会话名加时间戳命名也可以自己定格式。热词里“mobaxterm保存日志”问的就是这个建议每个会话都单独开日志别嫌占空间关键时刻能救命。注意日志目录别设在中文路径下某些版本会写不进去。用纯英文路径比如D:\G1_Logs\。3. G1网络接入与SSH服务确认3.1 网段规划与物理连接G1出厂默认的网口IP通常是192.168.123.xxx这个段具体地址看固件版本。你的电脑要跟它在同一网段才能通。操作上把电脑有线网卡设成静态IP比如192.168.123.100子网掩码255.255.255.0网关可以不填。然后用网线直连G1的网口或者通过交换机接。这里有个常见坑很多人电脑上还开着WiFi连上机器人后系统路由表里默认路由还是走WiFi导致ping不通。解决办法是把WiFi先禁用或者手动加一条路由。Windows下可以用route add命令Linux下用ip route add。实测下来直接禁WiFi最省事。物理连接确认后先ping一下机器人地址。通的话再往下走不通就检查网线、网口指示灯、IP配置。G1的网口指示灯正常应该是绿灯常亮、黄灯闪烁。如果灯都不亮可能是网线问题或者网口没启用换根线试试。3.2 SSH服务状态检查与端口确认G1内部跑的是Linuxsshd一般是开机自启的。但有些定制固件可能没开或者改了端口。确认方法有两种一是直接尝试连接看报什么错二是通过串口登录进去用命令查。串口登录需要USB转TTL模块接G1的调试串口波特率通常是115200。进去后执行systemctl status sshd如果显示active (running)就说明服务在跑。再看监听端口ss -tlnp | grep ssh正常应该看到0.0.0.0:22或者:::22。如果端口不是22记下来MobaXterm里要改。如果服务没跑用systemctl start sshd启动再enable一下开机自启。还有一种情况是防火墙拦了。G1上可能跑着ufw或者iptables检查一下sudo ufw status如果是active把22端口放行sudo ufw allow 22/tcpiptables的话用iptables -L -n看规则有DROP就加一条ACCEPT。这些操作做完再试连接。3.3 首次连接与主机密钥确认第一次用MobaXterm连G1会弹出一个主机密钥确认框问你是否信任这个主机。这是SSH的正常机制防止中间人攻击。点Accept就行密钥会存到本地known_hosts文件里。如果之后机器人重装了系统或者换了密钥会报“Host key verification failed”这时候要去known_hosts里把对应条目删掉或者用ssh-keygen -R命令清除。连接时用的默认用户名宇树G1一般是unitree密码可能是出厂默认的具体看随机器附带的文档。首次登录后第一件事就是改密码用passwd命令。别用太简单的机器人虽然在内网但万一接入了办公网就有风险。4. MobaXterm会话配置与密钥登录实战4.1 新建SSH会话的详细参数打开MobaXterm点Session选SSH。在Remote host里填G1的IP比如192.168.123.161。Specify username勾上填unitree。Port默认22如果之前查到改了端口就填对应的。这些填完先别急着点OK点下面的Advanced SSH settings标签页有几个关键项要调。第一个是“Use private key”如果你已经配了密钥登录就勾上并选密钥文件没有就先不勾用密码登录。第二个是“SSH engine”默认用MobaXterm自带的就行除非有特殊需求。第三个是“Execute command”可以填一个登录后自动执行的命令比如cd到工作目录这个看个人习惯。还有个容易被忽略的Terminal settings里的“Backspace sends ^H”选项。有些Linux发行版默认把Backspace识别成^H导致按退格键出现乱码。如果连上后发现退格不好使回来把这个勾上或者取消试一下哪个对。4.2 SSH密钥生成与部署密码登录每次都要输麻烦而且不安全。配密钥登录是标准做法。生成密钥对用ssh-keygenWindows下MobaXterm自带了这个工具在Tools菜单里能找到或者直接在本地终端跑ssh-keygen -t ed25519 -C g1_debug-t指定算法ed25519比rsa更短更安全现在推荐用这个。一路回车默认存在C:\Users\你的用户名.ssh\目录下生成id_ed25519和id_ed25519.pub两个文件。带.pub的是公钥要传到机器人上。传公钥有两种方式。一是用MobaXterm的SFTP功能连上后把pub文件拖到/home/unitree/.ssh/目录然后登录终端执行cat ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh二是用ssh-copy-id命令MobaXterm的本地终端里跑ssh-copy-id -i ~/.ssh/id_ed25519.pub unitree192.168.123.161输入一次密码就自动部署好了。第二种更省事推荐。4.3 权限报错与bad owner问题处理热词里有个“bad owner or permissions on c:\users\thinkpad/.ssh/config”这个报错在Windows下特别常见。原因是.ssh目录或者里面的文件权限太开放SSH客户端出于安全考虑拒绝使用。Windows下权限管理跟Linux不一样得用icacls命令改。先看当前权限icacls C:\Users\你的用户名\.ssh\config如果显示有Everyone或者Users组的写权限就得去掉。执行icacls C:\Users\你的用户名\.ssh\config /inheritance:r icacls C:\Users\你的用户名\.ssh\config /grant:r %USERNAME%:F这两条命令先断开继承再只给当前用户完全控制。对.ssh目录本身和里面的id_ed25519私钥文件也要做同样处理。私钥文件权限尤其重要如果别的用户能读SSH会直接拒绝加载。改完权限再连应该就不报bad owner了。如果还报检查一下文件是不是在OneDrive同步目录下同步软件有时候会改权限把.ssh挪到本地非同步目录最稳。提示MobaXterm里如果配了密钥还提示输密码先确认私钥路径对不对再看机器人端authorized_keys权限是不是600.ssh目录是不是700。这两个权限不对密钥登录会静默失败回退到密码。5. 网络调试与UDP数据抓取实操5.1 机器人内部通信架构速览G1内部各模块之间通信主要走UDP比如关节控制器、IMU、视觉模块之间的数据交换。想调试这些数据流得先搞清楚谁发给谁、端口是多少。常见做法是登录G1后看进程和端口占用sudo netstat -unlp-u只看UDP-n显示数字端口-l监听状态-p显示进程。这样能看到哪些程序在监听哪些UDP端口。再结合ps aux看进程命令行基本能推断出通信关系。如果文档里没写端口分配可以用tcpdump抓一段时间包看流量特征。比如sudo tcpdump -i eth0 -nn udp -w g1_traffic.pcap抓个几十秒然后用Wireshark打开分析。看源IP、目的IP、端口、包大小、发送频率就能反推出通信矩阵。5.2 网络调试助手的使用要点热词里提到的“网络调试助手v5.0.3”是Windows下常用的UDP/TCP调试工具。在G1调试场景里它的典型用法是模拟某个模块发数据或者接收机器人发出的数据看内容。比如你想测试G1的某个UDP接口可以在调试助手里建一个UDP服务端监听指定端口然后让G1往这个端口发数据看能不能收到、内容对不对。配置时注意几点一是绑定IP选本机在机器人同网段的那个地址别选0.0.0.0除非你知道自己在干嘛二是端口别跟系统其他服务冲突三是编码格式G1发的数据可能是二进制调试助手要切到HEX模式看别用ASCII不然全是乱码。发送测试数据时先发简单的比如几个字节的固定值确认链路通了再发复杂结构。接收方向如果一直没数据先确认G1那边确实在发用tcpdump在机器人上抓一下排除是网络问题还是应用没发。5.3 在MobaXterm里做端口转发与抓包MobaXterm支持SSH隧道可以把机器人上的端口转发到本地。比如G1上跑了一个Web服务在8080端口你想在本地浏览器看就建一个本地端口转发在会话的Tunneling设置里选Local port forwarding本地端口填8080远程主机填localhost远程端口填8080。连上后本地访问localhost:8080就是机器人上的服务。抓包方面如果不想在机器人上装Wireshark可以用SSH把tcpdump的流量导到本地。命令是ssh unitree192.168.123.161 sudo tcpdump -i eth0 -nn udp -w - local_capture.pcap这样抓到的包直接存到本地文件用Wireshark打开分析。注意sudo可能需要密码可以配NOPASSWD或者用ssh -t分配终端。MobaXterm自带的网络工具里也有ping、traceroute、端口扫描这些调试网络连通性够用了。端口扫描可以快速确认G1上哪些端口开着比一个个试快。6. 常见问题排查与避坑经验6.1 连接失败类问题速查现象可能原因排查方法ping不通网段不对/网线问题/WiFi干扰检查IP配置禁用WiFi换网线Connection refusedsshd没跑/端口不对/防火墙拦串口登录查服务状态和端口Permission denied用户名密码错/密钥权限不对确认用户名检查authorized_keys权限Host key verification failed机器人密钥变了删除known_hosts对应条目连上就断网络不稳定/MTU问题检查网线调MTU这个表基本覆盖了九成以上的连接问题。遇到报错先对号入座按排查方法走一遍大部分都能解决。6.2 密钥与权限类坑点Windows下.ssh目录权限问题是重灾区。除了前面说的icacls方法还有个简单粗暴的把.ssh目录从C:\Users\xxx\下挪到别的地方比如D:\ssh\然后在MobaXterm里指定这个路径。这样绕开了用户目录的继承权限省得跟icacls较劲。另一个坑是密钥格式。MobaXterm早期版本只认PPK格式PuTTY的密钥格式不认OpenSSH格式。如果你用ssh-keygen生成的密钥可能需要在MobaXterm里转换一下或者用Tools里的MobaKeyGen导入再导出成PPK。新版已经支持OpenSSH格式了但如果你用的是老版本注意这个。还有authorized_keys文件如果是从Windows传过去的可能带了CRLF换行符导致SSH解析失败。用dos2unix转一下或者传的时候用二进制模式。6.3 网络调试中的典型故障UDP抓包抓不到数据最常见的原因是抓错了网卡。G1可能有多个网口eth0、eth1数据走的是哪个得确认。用ip addr看网口列表和IP选对的那个抓。另外如果开了硬件加速或者offloadtcpdump可能抓不全加--no-promiscuous-mode或者调整缓冲区试试。网络调试助手收不到数据先确认防火墙。Windows防火墙默认可能拦UDP入站在防火墙设置里给调试助手放行。再确认绑定IP如果绑了127.0.0.1外部数据进不来得绑实际网卡IP。MobaXterm会话里跑长时间抓包可能因为缓冲区满丢包。可以在tcpdump命令里加-w file -C 100这样按大小切文件或者用-W限制文件数循环覆盖。别让一个文件无限大不然磁盘满了机器人可能出问题。6.4 多机批量管理技巧如果你手上有好几台G1一台台配太慢。MobaXterm支持多执行模式在会话列表里选中多个会话右键选“MultiExec”就能同时往多个终端发命令。批量改配置、批量重启服务特别方便。还可以用MobaXterm的宏功能把常用操作录成宏一键执行。比如登录后自动cd到工作目录、source环境变量、启动某个脚本录一次以后点一下就行。SSH批量登录也可以用脚本在本地终端写个for循环for ip in 192.168.123.161 192.168.123.162 192.168.123.163; do ssh unitree$ip hostname uptime done配合密钥登录不用输密码几台机器状态一秒看完。7. 远程开发与文件传输的进阶用法7.1 SFTP面板的高效使用MobaXterm连上SSH后左侧会自动出现SFTP面板显示机器人上的文件系统。这个面板支持拖拽上传下载、右键改权限、重命名、删除。传文件比scp命令直观多了。我一般把常用的脚本、配置文件放在本地一个目录改完直接拖过去省得来回敲命令。面板里可以开多个标签页同时浏览不同目录。比如一个标签看/home/unitree/一个看/etc/对比配置方便。上传大文件时注意机器人磁盘空间G1的存储一般不大别塞满了。7.2 VS Code远程连接G1热词里“vscode连接ssh远程服务器”也是高频需求。VS Code装Remote-SSH插件后可以直接连G1在本地编辑代码保存即同步到机器人还能用终端、调试器。配置方法装插件后按F1选“Remote-SSH: Add New SSH Host”填unitree192.168.123.161然后选SSH配置文件。连上后打开机器人上的目录就能像本地一样开发。这个方式比在MobaXterm里用vim改代码舒服多了特别是写Python脚本的时候有补全、有语法检查。调试也可以用VS Code的调试器attach到机器人上的进程比print大法高效。7.3 图形化程序的X11转发G1上如果跑了带图形界面的程序比如rviz、rqt这些ROS工具可以通过X11转发显示到本地。MobaXterm默认开启X11转发连上后机器人上的图形程序会自动弹到Windows桌面。前提是本地装了X ServerMobaXterm自带一个不用额外装。跑之前确认机器人上DISPLAY变量设置对了一般是export DISPLAY:0或者让SSH自动设置。如果弹不出来检查MobaXterm的X11转发选项有没有开以及本地防火墙有没有拦X11端口。这个功能在调试视觉算法、看点云的时候特别有用不用挤在机器人小屏幕上直接在大显示器上看。8. 我个人在实际调试中的几点体会G1的网络调试说到底就是三件事通、稳、看得见。通是基础网段、服务、权限三样对齐了就能连上稳是长期密钥登录、日志记录、会话管理做好了日常调试才不烦看得见是进阶抓包、转发、远程开发这些手段用起来才能深入到底层数据流。我踩过最深的坑是权限问题。Windows下.ssh目录的继承权限折腾了我一个下午最后发现把目录挪出用户文件夹最省事。还有就是别小看网线有次调了半天以为是配置问题换根线就好了劣质网线在机器人这种电磁环境复杂的地方特别容易出问题。另外建议养成随手记的习惯。每台G1的IP、端口、密码、特殊配置都记在一个文档里换人接手或者自己过段时间再调的时候不用重新摸一遍。MobaXterm的会话导出功能可以把所有配置导成文件备份一份换电脑直接导入。最后分享一个小技巧MobaXterm的“Follow terminal folder”功能勾上后SFTP面板会自动跟着终端cd的目录走省得手动导航。这个在机器人上到处翻文件的时候特别好用很多人不知道。
返回列表