远程管理前先留后路:Meshtastic 设备公私钥备份与恢复

教程

上一篇 《山顶节点不用再爬山:Meshtastic 远程管理节点教程》 发出来之后,很多群友的第一反应是:这个功能确实能省掉不少爬楼、爬山、拆盒子的麻烦。

但紧接着就会出现另一个问题:如果我手里的控制端节点重新刷了固件,公钥变了,那山上或者楼顶那台节点是不是就不认我了?

答案是:是的,很可能就不认了。

新版 Remote Node Admin 的授权逻辑是把控制端的 Public Key 写进被控端的 Admin Key。被控端并不是认你的手机,也不是认你的啥账号,而是认控制端这台 Meshtastic 节点的那一对公私钥。

在 Meshtastic 里,只要你擦除并重新安装固件,设备里的 Public Key 和 Private Key 就可能丢失并重新生成。新钥匙和旧钥匙不是同一个身份,远端节点自然不会把它当成原来的管理员。

这篇文章就是给上一篇远程管理教程补上一个很重要的运维习惯:一定要把控制端的钥匙备份好,以及如何恢复到备份过的钥匙。

先记住这句话

只保存 Public Key 不够。远端节点保存的是你的公钥,但真正证明「我是我本人🐕」的,是控制端手里的私钥。公钥可以公开,私钥必须自己保存好。丢了私钥,就不能靠旧公钥继续证明身份。

为什么刷机后会失去远程管理权限

Meshtastic 2.5 之后的远程管理,主要依赖 PKC,也就是公开密钥加密。你可以简单理解为:控制端有一对钥匙,一把是 Public Key,一把是 Private Key。Public Key 可以给别人看,Private Key 只能留在自己设备里。

当你把控制端的 Public Key 填进山顶节点的 Admin Key 时,山顶节点就相当于在自己的授权名单里记了一条:以后这个公钥对应的设备,可以通过 Mesh 网络发管理命令过来。后面你在手机 App 或 CLI 里远程修改配置时,控制端会用自己的私钥证明身份,远端节点再用之前保存的公钥来验证。

问题就出在重新刷机这里。普通升级固件不一定会擦掉设备配置,但如果你执行了 erase、full erase、factory reset、重新安装时清空了设备存储,或者换了一块新控制端,那么原来的公私钥就没了。设备会生成一对新的钥匙。这个新公钥没有写进山顶节点的 Admin Key 里,山顶节点也无法知道它其实还是你。

所以最后就会出现一个很尴尬的场景:你明明还看得到远端节点,也知道它在那里,但 Remote Admin 操作发过去就是没有权限。要修这个问题,要么你能把旧钥匙恢复回控制端,要么就只能找另一台已经授权的控制端,或者亲自去接触远端节点,把新的公钥重新写进去。

大多数人会先用 App:手动备份公钥和私钥

从完整性来说,Meshtastic 更推荐用 CLI 导出配置。但现实情况是,很多读者平时就是拿手机 App 配节点,不一定会为了备份钥匙专门打开电脑、装 Python、装 CLI。所以这篇文章先讲 App 方法,门槛最低,符合大多数读者的使用习惯。

在 App 的 Security 页面里,你至少应该把 Public Key 和 Private Key 都保存下来,而且要把它们当成一对保存。不要只存 Public Key,也不要把 A 设备的 Public Key 和 B 设备的 Private Key 混在一起。

Public Key 可以复制给远端节点作为 Admin Key;Private Key 则必须放到安全位置。最好的位置是密码管理器,比如 1Password、Bitwarden、iCloud 钥匙串这些常用的密码管理器 App。

截图也可以作为最基础的兜底办法,但它的问题很明显:截图容易丢、容易被相册同步到不该同步的地方,也可能因为截得不完整而漏掉一部分钥匙。如果只能截图,至少确认 Public Key 和 Private Key 都完整出现在图片里。

要手动恢复时,就回到 App 的 Security 页面,把同一份备份里的 Public Key 和 Private Key 分别粘贴回对应字段,并保存。这里的关键点是「成对恢复」:这两个值必须来自同一台设备、同一次备份,最好在同一次操作里一起粘贴回去。如果你只粘贴 Public Key,没有恢复对应的 Private Key,控制端看起来可能显示了旧公钥,但它没有那把能证明身份的私钥,远端节点仍然不会认它。如果你只粘贴 Private Key,或者粘贴了一对不匹配的钥匙,也会出现身份对不上的问题。

恢复完成后,同样建议检查 App 里显示的 Public Key 是否和远端节点 Admin Key 里保存的那一串一致。只要 Public Key 和 Private Key 这对钥匙都恢复成功,控制端的远程管理身份就回来了。

更完整的方法:用 CLI 导出完整配置

如果你愿意用电脑操作,官方更推荐的备份方式,是使用 Meshtastic CLI 导出配置。这个方法的好处是最完整,不只是保存公钥和私钥,也会把设备当前配置一起导出成一个 YAML 文件。以后恢复时,一条命令就能把设备尽量恢复到原来的状态。

如果你还没有安装 CLI,可以先看官方的 Meshtastic CLI 文档。安装好之后,用 USB 连接你准备作为控制端的那台节点,在终端里执行:

meshtastic --export-config > config_backup.yaml

执行完成后,当前目录会多出一个 config_backup.yaml 文件。这个文件就是你的设备配置备份,里面包含 Public Key 和 Private Key。也正因为它包含私钥,所以不要把它随便发到微信群、论坛、GitHub 仓库或者公开网盘里。它应该像密码一样保存。

比较稳妥的做法,是把这个 YAML 文件放进你平时真正会用的备份体系里,比如群友最爱用的飞牛 NAS 系统。文件名也建议写清楚一点,例如:

meshtastic-control-node-bg2xxx-2026-04-19.yaml

以后你看到这个文件名,就能知道它是哪台控制端、什么时候导出的配置。等你手里有多台控制端时,这个习惯会非常省事。

恢复钥匙:让控制端重新变回原来的身份

如果控制端已经被擦除重刷,或者你换了同型号设备但希望它继续拥有原来的远程管理身份,可以用之前导出的 YAML 恢复配置:

meshtastic --configure config_backup.yaml

这条命令会把备份文件里的配置写回当前连接的设备。恢复完成后,建议重新打开 App 或 CLI 读取一下 Security 里的 Public Key,和备份前记录的旧公钥对比一下。只要公钥一致,远端节点原来保存的 Admin Key 就还能继续匹配,你就不需要再跑到山顶或楼顶重新授权。

这里要注意,恢复配置不是一个「随便导入到任何节点都没有影响」的动作。YAML 里可能包含频道、蓝牙、LoRa、模块、节点名称等设置。如果你只是想恢复某台控制端的身份,最好把它恢复到原本那台设备,或者至少先确认你愿意让当前设备继承这份配置。不要拿一份控制端备份到处给别的设备导入,否则很容易把多个节点搞成同一个身份或同一套配置。

已经丢了钥匙怎么办

如果控制端已经擦除重刷,而之前没有备份 Private Key,那就不要再纠结能不能从旧 Public Key 反推出私钥了。按现代公开密钥加密的设计,这条路就是走不通的。

这时你还有三个现实选项。

第一,看看被控节点的 Admin Key 里有没有授权过第二台控制端。如果有,就用那台还能管理的设备连过去,把新控制端的 Public Key 加进去。Meshtastic 的 Admin Key 通常有多个槽位,上一篇远程管理教程里也提到过,最多可以授权 3 台不同控制端。这个设计在这里就很有价值。

第二,如果远端节点还有本地可达方式,比如它其实在楼顶但还能通过 USB、蓝牙或局域网 TCP 接触到,那就直接连上它,把新控制端的 Public Key 写进 Admin Key。

第三,如果前两条都没有,那就只能现场维护。对山顶太阳能节点、塔杆节点、楼顶防水盒来说,这就是大家最不想遇到的情况:不是因为远程管理功能不好用,而是因为最开始没有给控制端留后路。

给长期部署节点的一套习惯

长期部署的节点,最好把钥匙备份当成部署流程的一部分:先刷好控制端并完成基础设置,再备份这台控制端的 Public Key 和 Private Key,最后再把它的 Public Key 写进远端节点的 Admin Key。

如果远端节点很难接触,不要只授权一台控制端。每个被控端最多可以添加 3 个控制端的 Admin Key,我建议山上、楼顶这类节点尽量把 3 个额度都用满。这样就算其中一台控制端坏了、丢了,或者公私钥没有备份好,仍然还有另外两台设备可以远程访问。备份文件和截图也不要随手外发,它们的价值和密码差不多,目标是自己能找回、别人拿不到。

总结

Remote Node Admin 解决的是「远端节点不用再爬上去改设置」的问题,但它有一个前提:控制端的身份要稳定。对于 Meshtastic 来说,这个身份就是设备里的公私钥。

所以在启用远程管理之前,先做一次钥匙备份。大多数读者会更习惯用 App:进入 Security 页面,把同一对 Public Key 和 Private Key 保存到密码管理器里;以后恢复时,也把这一对钥匙一起粘贴回对应字段。

如果你愿意用电脑,Meshtastic 更推荐 CLI 的完整导出方式:

meshtastic --export-config > config_backup.yaml

CLI 恢复时使用:

meshtastic --configure config_backup.yaml

只要这一步做了,将来控制端重刷固件、换设备、误清空配置时,你还有机会把原来的身份恢复回来。否则等山顶节点只认旧公钥,而你手里只剩新公钥时,远程管理就会重新变成现场维护。

本文作者: Hays Chan | 陈希

本文链接: https://meshcn.net/meshtastic-security-keys-backup-restore/