关于 remote-systems-administration
面向管理 Unix 类主机的运维人员,这项技能提供远程系统管理的决策与安全流程,覆盖 SSH、Ansible 和 Paramiko。它强调先发现平台与控制面,再执行有范围、可回滚并经过验证的变更。
主要功能
- 01识别操作系统及控制面
- 02按任务选择 SSH、Ansible 或 Paramiko
- 03变更前要求回滚与恢复路径
- 04通过预检、范围限制和验证控制操作
- 05记录逐主机结果与不确定项
适用场景
- 01诊断单台远程主机
- 02在多台主机上执行重复配置
- 03通过 Python 协调 SSH 或 SFTP
- 04安全处理网络或防火墙变更
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill remote-systems-administration安装后在 Claude Code 中输入/remote-systems-administration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdevals/evals.jsonreferences/ansible-administration-and-safety.mdansible-runbooks-and-advanced-operations.mdansible.mdfleet-automation.mdfreebsd.mdlinux-alpine.mdlinux-arch.mdlinux-debian-ubuntu.mdlinux-rhel-fedora.mdlinux-suse.mdlinux.mdmacos.mdnetbsd.mdopenbsd.mdportable-operations.mdsafety-and-verification.mdsource-index.mdtemplates/remote-change-plan.md详细介绍
远程系统管理
将其用作运维决策层,而不是一堆远程命令。类 Unix 系统使用相同的术语,但实现各不相同。选择命令前,先识别目标平台和当前控制平面。
运维约定
- **先发现,再更改。**记录目标身份、生产状态、OS 和版本、服务管理器、包管理器、防火墙、访问路径、权限提升路径和当前状态。不要根据主机名、记忆或清单标签推断这些信息。
- **使用最小可行控制平面。**单台主机上的有限任务使用原生 SSH;跨主机群重复应用目标状态使用 Ansible;只有当 Python 程序确实需要 SSH 协议控制,且前两者无法满足时,才使用 Paramiko。
- **首先保护访问。**更改 SSH、路由、DNS、防火墙、权限提升或网络接口前,先建立经过测试的回滚方案和第二条恢复路径。新路径可用前,保持当前会话畅通。
- **预览、限定、验证。**限制目标范围;尽可能使用原生验证、试运行、差异对比或金丝雀发布;然后验证受影响的服务及其用户可见的边界。退出代码为零只能证明命令已运行。
- **报告证据,而非故事。**保留范围有限的逐主机结果:目标、命令类别、更改前后的证据、失败情况、回滚状态和剩余的不确定性。切勿在回复中粘贴机密、密钥、完整配置文件或不受限制的日志。
先运行 references/portable-operations.md 中的通用分类探测,然后加载匹配的 OS/系列覆盖项并运行其命令预检。只有完成所需预检并通过安全检查后,才能选择更改命令。
只读发现交接
完成预检后使用此精简格式。字段只能根据观察到的证据填写;否则写 unknown 或 not supplied。
- 目标和范围:
- 观察到的平台和控制平面:
- 有限范围的证据:
- 未知或受阻项:
- 下一步安全操作:
首次响应:分类任务
| 情况 | 默认路径 | 不要做 |
|---|---|---|
| 诊断或对一台主机进行一项有限更改 | 使用原生 ssh 执行只读预检和范围有限的命令/操作;不要使用 tail -f 这类持续跟踪流 | 不要打开交互式 Shell 并进行未记录的编辑 |
| 在多台主机上重复应用相同的目标状态 | 使用 Ansible inventory + playbook,并采用金丝雀/串行发布 | 不要在生产主机上盲目循环执行 ssh |
| Python 必须协调 SSH 通道、SFTP 或自定义协议流程 | 使用 Paramiko,并严格验证主机密钥、显式设置超时 | 不要禁用主机密钥检查,也不要把脚本变成临时拼凑的主机群管理工具 |
| 平台/控制平面未知 | 运行 references/portable-operations.md 中范围有限的发现操作 | 不要凭猜测使用 systemctl、apt、pfctl 或 launchctl |
| 更改会影响连接、防火墙、身份验证、重启、存储或删除操作 | 先加载 references/safety-and-verification.md | 不要在明确回滚方案和恢复路径前进行更改 |
每次变更前的必备预检
在执行第一个会改变状态的命令前,确认:
- 确切的主机、环境和授权范围;
- OS/发行版及适用的平台覆盖指南;
- 服务管理器、包管理器、防火墙实现和配置所有者;
- 访问身份、提权方式,以及连接是否经过堡垒机;
- 预期状态、影响范围、回滚命令或制品,以及停止条件;
- 在组件层和相关外部边界进行验证。
**连接/访问执行前关卡:**明确说明授权、保留的会话、独立恢复路径、已测试的回滚、停止条件,以及组件和外部边界验证。如果其中任何一项未知,请在执行前停止。
可在未经确认的情况下进行只读探查。**只读意味着不产生持久状态:**不得创建回滚脚本或捕获文件、暂存更新元数据、更改文件,或将会改变状态的操作称为 preflight。在确认所需的平台和控制平面证据后即停止。破坏性操作、权限变更、防火墙/远程访问变更、卸载软件包、存储操作以及重启/关机,都必须在完成此预检后获得明确指令。
路由参考
| 需求 | 加载内容 | 文件 |
|---|---|---|
| SSH、POSIX 诊断、限制输出、文件传输、日志和主机探查 | 可移植运维 | references/portable-operations.md |
| Ansible 管理、清单、角色、集合、密钥、lint、Molecule、部署、故障排查或特定平台自动化 | Ansible 管理 | references/ansible.md(索引 → ansible-administration-and-safety.md、ansible-runbooks-and-advanced-operations.md) |
| Paramiko,或对比机群控制方案和结果核算要求的精简指南 | 机群自动化 | references/fleet-automation.md |
| Linux 分类、init 探查、跨发行版安全,或未知/精简衍生版本 | Linux 分类 | references/linux.md |
| Debian、Ubuntu,或在确认发行版和配置所有权后的 APT/dpkg 主机 | Debian/Ubuntu 覆盖指南 | references/linux-debian-ubuntu.md |
| RHEL、Fedora,或在确认供应商支持和生命周期后的兼容 RPM/DNF 主机 | RHEL/Fedora 覆盖指南 | references/linux-rhel-fedora.md |
| SLES、openSUSE 或 zypper/RPM 主机,包括事务性根目录探查 | SUSE 覆盖指南 | references/linux-suse.md |
| Arch Linux 或在确认支持/仓库情况后的 Arch 衍生 pacman 主机 | Arch 覆盖指南 | references/linux-arch.md |
| Alpine Linux 或在确认持久化模式后的 apk/OpenRC 主机 | Alpine 覆盖指南 | references/linux-alpine.md |
| FreeBSD rc(8)、rc.conf、pkg、jail 以及 pf/ipfw 路由 | FreeBSD 覆盖指南 | references/freebsd.md |
| NetBSD rc.d、rc.conf、service 以及 pkgsrc 路由 | NetBSD 覆盖指南 | references/netbsd.md |
| OpenBSD rcctl、rc.conf.local、pkg_add、syspatch 以及 pf | OpenBSD 覆盖指南 | references/openbsd.md |
| launchd、softwareupdate、配置描述文件、pf 以及 macOS 运维限制 | macOS 覆盖指南 | references/macos.md |
| 变更关卡、安全类别、回滚和验证证据 | 安全与验证 | references/safety-and-verification.md |
| 主要文档和源内容时效性 | 源索引 | references/source-index.md |
平台边界
不要抹平平台差异:
systemctl不是 BSD 或 macOS 的服务管理器。rcctl专用于 OpenBSD;FreeBSD 使用 rc 脚本和service。launchctl的域和标签不是 systemd 单元。apt、dnf、pacman、pkg、pkg_add、softwareupdate和brew在更新、回滚和软件包来源语义上各不相同。- Linux nftables、BSD PF 和 macOS Application Firewall 属于不同的控制平面。切勿机械地转换规则。
范围边界
此技能涵盖主机级 Unix 操作。容器相关操作交由 docker-compose,集群相关操作交由 kubernetes,加密 tailnet 策略交由 tailscale,检测与修复组件交由 crowdsec,可靠性流程设计交由 site-reliability-engineering。
此技能不授权凭据恢复、绕过安全边界、删除生产环境、操作提供商控制台,或未经审核的操作系统升级。
常见陷阱
- 在错误的平台上运行正确的命令。 操作前先确认服务、软件包和防火墙管理器。
- 将 SSH 连接视为权限证明。 连接成功并不能确认 sudo 策略、主机身份或是否有权执行更改。
- 使用
StrictHostKeyChecking=no或 ParamikoAutoAddPolicy。 未知主机密钥是身份事件,不是为了方便而弹出的提示。 - 一开始就并行操作。 先在一个金丝雀主机上验证流程,再分批逐步推出,并设置停止条件。
- 因为服务已启动就认定其运行正常。 检查进程/单元状态、日志、监听端点,以及相关依赖或外部边界。
- 混淆软件包升级与操作系统升级。 平台版本生命周期、内核/基础系统更新和第三方软件包有不同的流程。
- 通过更改访问路径修复远程主机,却没有回滚方案。 保留一个活动会话和独立的恢复渠道。
验证清单
- 已从运行中的主机发现目标和平台。
- 更改具有明确的范围、回滚方案和恢复路径。
- 控制平面与目标平台相匹配。
- 批量操作使用了清单、有限并发和停止条件。
- 证据中未包含敏感值和无界输出。
- 验证涵盖已更改的组件及其相关外部边界。
- 已明确记录每台主机的成功、失败和回滚状态。