很多人都在使用 Hermes Agent,但是没有多少人会去注意 Agent 使用过程中的安全问题,你的聊天记录、个人信息,甚至一些密码、密钥,如果不做一些基础的检查和设置,随时都有暴露的风险。
本篇文章就会分为两个部分去教你,怎么把你的 Hermes Agent 打造成密不透风的安全屋,你只需要安心地使用下去即可。
第一部分:服务器安全,不管你的 Agent 是运行在本地,还是在远程服务器,都需要做一些最基本的防护,确保你的数据安全。
第二部分:数据备份,天灾人祸是不可避免的,就算你的服务器是放在远程,也可能会导致一些意外,出现数据不可用的情况,所以你的一些特殊资料一定要做备份,这样出现意外的时候,可以随时恢复。
服务器安全设置
在使用 Agent 的过程中,最可怕的不是你已经知道自己的机器或者服务器出现了问题,而是自己的机器已经出问题而不自知,所以做提前的防护就变得尤为重要。下面会以 Linux 服务器为例,教你怎么把你的服务器做安全加固。
不会复杂的命令也没有关系,只需要把下面的提示词丢给 AI 操作即可,但是一定一定要阅读完下面的注意事项才可以开始动手。
公网环境极其恶劣,默认的 22 端口和密码登录方式是黑客脚本攻击的重点对象。为了保障服务器不沦为肉鸡,必须进行以下三项配置:

1、修改 SSH 默认端口:将默认的 22 端口修改为 20000–65535 之间的高位端口。这能规避 99% 的无差别自动化扫描。
请检查当前 Linux 系统和 SSH 配置,备份配置文件后,从 20000–65535 中选择一个未占用的端口并修改 SSH 配置。先放行新端口并暂时保留 22 端口,执行配置检查后重新加载 SSH,确认新端口正在监听。最后给出新端口的登录测试命令和回滚方法;遇到错误立即停止。
2、禁用密码登录:配置 SSH 密钥对,仅允许持有私钥的客户端登录,并彻底关闭密码验证功能。这样设置基本可以安全很多,因为密码泄露是很大的风险,密钥登录基本上杜绝了撞库或者其他方式的扫描。
请检查当前用户的 SSH 公钥和 authorized_keys 权限。如果没有公钥,指导我在本地生成 Ed25519 密钥,我只会提供公钥,绝不提供私钥。备份 SSH 配置,启用密钥认证;等我在另一个终端确认密钥登录成功后,再关闭密码和交互式认证。修改后检查配置、重新加载服务,并给出验证结果和回滚方法。
3、配置防火墙与 Fail2Ban:启用 UFW 防火墙并放行新端口;启用 Fail2Ban 监控 SSH 日志,自动封禁多次试错的恶意 IP。
请检查服务器当前的防火墙、SSH 端口和正在使用的业务端口。备份现有规则,先放行新的 SSH 端口和必要业务端口,再启用 UFW,设置为默认拒绝入站、允许出站。随后安装并配置 Fail2Ban 保护新的 SSH 端口,使用 maxretry=5、findtime=10m、bantime=1h,并检查防火墙、Fail2Ban 和 SSH 是否正常。不要覆盖现有规则,最后给出配置结果和回滚方法。
操作时不要关闭当前 SSH 窗口,应在另一个终端确认新端口和密钥可以正常登录。云服务器还需要在安全组中放行新端口。新登录方式验证成功前不要关闭 22 端口或密码登录,也不要把私钥发送给 AI。执行前建议先创建服务器快照或确保可以通过云厂商的控制台救援模式恢复。
如果感兴趣,想自己动手设置,可以看我这篇文章:从零到一:我的 VPS 标准化开荒 SOP,五步打造稳定、安全、高性能的服务器
数据备份
数据备份的方式有很多,但是我觉得最安全、最高效的还是 GitHub 仓库的形式,它有以下优点:
1、只需要一个简单的邮箱就可以注册账号,提供了账号和 API Key 授权方式,可以非常方便地管理仓库和内容。尤其是官方工具 gh,提供了完善的接口,可以由 AI 自主完成。
2、使用 GitHub 基本上是 AI 的必备技能之一,上面有非常多开源的优秀工具和项目,不管是学习,还是找到一些你能用的软件,都是不二之选。
gh安装命令:sudo apt install gh

登录账户
官方提供了两种方式,可以登录账号。第一种是直接使用账户名和密码。第二种是创建一个 API Key,两种方式各有优劣。
第一种方式相对简单,只需要提供账户名密码即可,但是权限过大可能会造成项目之间的影响和污染,如果你只有一个项目的话,也就不影响,但是如果你有多个账户,就不推荐这种方式。
登录命令:
gh auth login,然后选择 GitHub,再选择 HTTPS 浏览器方式授权即可。到时候会出现一个 URL 和 Code,只需要在已登录 GitHub 的账号中输入对应的 Code 即可。

第二种方式相对于第一种复杂一点,需要去账号后台申请对应权限的 API Key,可以设置这个 Key 的权限范围和项目范围,它只能做哪些事情、不能做哪些事情,这样就可以做到很细的颗粒度。
1、登录 GitHub,选择设置菜单

2、选择 Developer settings

3、创建 API Key(选择 Personal access tokens → Fine-grained tokens)

这里可以控制对应的权限和有效期。如果不了解的话,默认使用第一种方式获取授权。但是如果大家感兴趣的话,我可以专门出一期讲解 GitHub 仓库权限的文章。
获取到 API Key 的话,登录方式也是一样的,只是最好选择 Auth Token 的登录方式,然后填入对应的 API Key 即可。

自动化备份
前面的都准备好之后,我们就可以用一句话让我们的 Hermes Agent 完成自动备份定时任务。
但是在此之前,我们需要划分好哪些文件夹是需要备份的,哪些文件夹是不需要备份的。不然把所有的内容放上去,不仅备份效率低,而且单个 GitHub 仓库是有容量上限的,所以这里我们一定要做一个简单的划分。
需要备份的内容
需要备份的东西,简单理解为一句话:你手工维护的资产,唯一且不可重复产生的内容,这里我已经帮你整理好。
SOUL.md AI 的性格属性
config.yaml 基础的配置项
skills/ 你自己的技能库
scripts/ 自定义的脚本
wiki / 观点库 观点沉淀(不是每个人都有)
cron/jobs.json(任务定义) 自动化任务
我列出来的每一项都是独一无二的,每个人的 Hermes Agent 中,这几个文件夹都可能不一样。如果有一个丢失了,基本上没有办法还原,除非你花时间把你前面做过的内容重新再做一遍,所以这部分是一定要做备份的。
不需要备份的内容
不需要备份的内容,简单一句话:不备份“运行时自动生成的东西”。它们可能是系统自带的,或者是运行中产生的过渡文件,不影响你整体使用,就算删除了也没有多大关系。
.env 环境配置,保存了你的密钥,这部分基于保密不推荐备份。
auth.json 授权信息
sessions/ 所有的聊天内容和信息,如果想回溯信息,也可以做备份。
logs/ 运行过程中产生的日志
cache/ 缓存内容
executions.db / ticker / lock
node / lsp / 依赖安装产物
设置备份自动化任务
区分好了,对应备份的内容就很简单了,我们只需要告诉我们的 Hermes Agent,帮我们设置一条定时任务,每天凌晨三点自动运行一次。
可以直接使用我下面的提示词,让 AI 帮你自动设置:
每天对 Hermes 做一次轻量配置备份,只保留可重建能力,不备份运行时垃圾和敏感凭据。
备份范围:
1. 主 profile 的 SOUL.md 和 config.yaml
2. research / publish / shortvideo-pipeline 的 SOUL.md 和 config.yaml(如果存在)
3. ~/.hermes/skills/
4. ~/.hermes/scripts/
5. /root/hermes-wiki
6. ~/.hermes/vault/opinions/(如果存在)
7. 各 profile 的 cron/jobs.json(任务定义;如果存在)
不要备份:
- .env
- auth.json
- sessions/
- state.db
- logs/
- cache/
- executions.db
- ticker / lock 文件
- node / lsp / 安装产物
执行要求:
- 目标仓库:/root/hermes-backup
- 用同步方式覆盖旧内容,源不存在就删除目标对应文件
- git add -A
- 只有有变更时才 commit 和 push
- commit message: auto backup YYYY-MM-DD_HH:MM
- 失败时输出明确错误,不要静默吞掉
配置好之后,我们隔天一定要去 GitHub 仓库查看是否备份成功,这也是为什么我在最后一句加了失败的时候要输出明确的错误,不要默认吞掉。
就是因为有一次在设置好定时任务的时候,其实它没有执行成功,但是没有输出任何报错,导致我以为我的备份任务是一直成功的。所以踩过这个坑,我就不希望大家再踩一遍。
写在最后
做好基本的安全防护和定时任务备份,你就可以安心地去使用你的 Hermes Agent,基本上不需要担心信息泄露和数据丢失的风险。
只有经历过数据丢失或者服务器被黑的人,才知道我说的这两点的重要性。不要等你真正出现了问题,再去找补救的方法。我们一定要未雨绸缪,做什么事情都要准备后手。
希望大家能学到真正的东西,想学习更多 Hermes Agent 对应的内容,可以看我的教程。
