文件
Cloud Agent Cleaner:一键检测并清理云服务器预装 Agent
一套面向 Linux 云服务器的开源清理工具,可自动识别阿里云、腾讯云、AWS、Oracle Cloud、Microsoft Azure 与 Google Cloud 常见预装 Agent,显示删除影响、保护关键 Guest Agent,并在执行后再次检查残留。
为什么做 Cloud Agent Cleaner?
很多云服务器创建完成后,系统里会预装远程运维、主机监控、安全防护、自动化执行等组件。 对于需要这些能力的用户,它们很方便;但如果你已经有自己的监控、安全、运维体系,或者希望减少后台常驻进程, 就可能希望把不需要的可选组件卸载掉。
真正麻烦的地方不是“删一个目录”,而是不同云厂商、不同系统镜像、不同历史版本的安装方式并不完全相同。 有的通过 systemd,有的通过软件包,有的还有厂商自己的卸载脚本;部分 Agent 卸载后还可能留下服务文件、静态目录或缓存。
目前支持哪些云平台?
| 云平台 | 当前识别/处理的组件 | 典型用途 |
|---|---|---|
| 阿里云 | 云助手、云监控、云安全中心 Aegis | 远程命令、Guest OS 监控、安全防护 |
| 腾讯云 | TAT、BaradAgent/Sgagent、YunJing | 自动化执行、监控、安全防护 |
| AWS | SSM、CloudWatch、CodeDeploy、Inspector Classic | 远程管理、监控、部署、安全检查 |
| Oracle Cloud | Cloud Agent、Management Agent、Workload Protection | OCI 管理插件、监控、安全能力 |
| Microsoft Azure | Linux Agent、Azure Monitor Agent | VM 管理、扩展、监控 |
| Google Cloud | Guest Agent、Ops Agent | Guest 环境、监控与日志 |
oracle.cloud-agent、azure.linux-agent、gcp.guest-agent
在一键模式中只会提示,不会删除。
cloud-init、qemu-guest-agent、VirtIO、ENA、NVMe 驱动以及脚本无法确认身份的未知软件也不会被处理。
一键使用
SSH 登录 Linux 服务器后执行:
curl -fsSLo /tmp/cloud-agent-cleaner.sh https://raw.githubusercontent.com/nljie1103/cloud-agent-cleaner/main/quick-run.sh && sudo bash /tmp/cloud-agent-cleaner.sh
程序首先只做检测,会把结果按组件列出来,例如:
aliyun.assistant DETECTED
aliyun.monitor DETECTED
aliyun.security DETECTED
确认清除以上可选组件?输入 y 继续 [y/N]:
只有输入 y 后才会真正清理检测到的可选组件。执行前会保存一份本机检测清单,完成后再次做残留验证。
服务器访问不了 GitHub 怎么办?
当前一键入口本身来自 raw.githubusercontent.com,随后 quick-run.sh
还会从 GitHub 下载项目的 main.tar.gz。因此只要服务器到 GitHub Raw 或 GitHub 主站其中一段连接失败,
一键命令就可能无法完成。
方案 A:在自己电脑下载,再上传服务器
这是 GitHub 无法直连时最稳妥的方式。先在能够正常访问 GitHub 的电脑打开项目主页,下载仓库 ZIP,解压后把整个项目目录上传到服务器。
- 电脑端下载项目:在 GitHub 项目页面选择
Code → Download ZIP。 - 上传到服务器:可以使用 SFTP、FinalShell、WinSCP、Termius、scp 等你已经在使用的文件传输方式。
-
进入目录执行:
本地上传后运行
cd cloud-agent-cleaner-main sudo python3 cloud_agent_cleaner.py --quick
方案 B:自己搭建可信镜像
如果你有很多国内服务器,建议把项目压缩包同步到自己控制的对象存储、网站或 CDN。 服务器从你自己的域名下载,再核对 SHA-256 后运行。这样既解决 GitHub 连通性,又不需要把 root 权限交给陌生代理。
curl -fL "https://你的可信域名/cloud-agent-cleaner-main.tar.gz" -o /tmp/cloud-agent-cleaner.tar.gz
sha256sum /tmp/cloud-agent-cleaner.tar.gz
mkdir -p /tmp/cloud-agent-cleaner
tar -xzf /tmp/cloud-agent-cleaner.tar.gz -C /tmp/cloud-agent-cleaner
cd /tmp/cloud-agent-cleaner/cloud-agent-cleaner-main
sudo python3 cloud_agent_cleaner.py --quick
上面的 SHA-256 必须与你发布镜像时记录的值一致。不要为了“能下载”就跳过完整性校验。
方案 C:只检测,不执行卸载
如果已经把项目上传到服务器,但暂时只想看看装了什么:
python3 cloud_agent_cleaner.py --audit
脚本实际会做什么?
识别云环境
读取系统 DMI 等信息,给出当前主机可能属于阿里云、腾讯云、AWS、OCI、Azure 或 GCP 的提示。
多证据检测
结合目录、软件包、systemd unit 和实际运行进程判断 Agent 是否存在,而不是只看一个文件名。
展示影响
清理前明确提示这个 Agent 对控制台命令、Guest OS 监控、安全防护等能力可能产生的影响。
保护核心组件
OCI、Azure、GCP 的部分核心 Guest Agent 默认不进入一键删除范围,降低误操作风险。
执行厂商卸载
能使用官方卸载方式时优先使用官方方式;下载厂商脚本时记录 HTTPS 来源与 SHA-256。
再次验证残留
卸载完成后重新检查进程、服务和目录;发现残留不会直接假装成功,而是继续提示。
阿里云 ECS 实机测试中遇到的几个真实情况
这个项目不是只按文档“猜”路径,我在多台阿里云 ECS 上实际测试过不同镜像状态,遇到过几种很典型的情况。
云助手 + 云监控 + 云安全中心全部存在
脚本可以同时识别三套组件。云监控除了 /usr/local/cloudmonitor,还能检测运行进程和 cloudmonitor.service。
云监控程序已经卸载,但 systemd unit 还在
实测出现过程序目录和进程都已经消失,只剩 cloudmonitor.service 的情况。当前版本会继续清理确认属于 CloudMonitor 的 unit 残留,再重新执行 systemd 验证。
Aegis 客户端已经离线,但目录还剩一百多 MB
阿里云官方卸载脚本执行完成后,某些机器仍可能留下 /usr/local/aegis 静态文件。当前版本会先确认 Aegis 服务和进程已经停止,再精确删除这个目录。
官方 Aegis 卸载脚本失败
实机遇到过官方卸载脚本非 0 退出、Aegis 进程仍然存活的情况。新版会显示错误摘要,并仅针对明确属于 Aegis 或可执行路径位于 /usr/local/aegis/ 的进程做本地兜底;确认停止后才清理目录。
这个脚本刻意不做什么?
- 不会看到“像云软件的名字”就直接批量
rm -rf。 - 不会默认删除 OCI、Azure、GCP 的关键 Guest Agent。
- 不会删除
cloud-init、qemu-guest-agent和虚拟化/存储/网卡驱动。 - 不会把“目录存在”等同于“进程正在运行”。
- 不会因为官方卸载脚本报错就假装已经卸载成功。
- 不会使用类似
/usr/local/aegis*这种过宽的通配符清理。
需要说明的是:删除 Guest OS 内的 Agent,并不意味着云厂商失去了对宿主机、VPC、云盘、实例控制面或基础监控的管理能力。 这个工具处理的是你虚拟机操作系统内部可以识别到的 Agent。
如何判断是否清理成功?
最理想的最终输出类似:
Post-action verification
[OK] aliyun.assistant: not detected.
[OK] aliyun.monitor: not detected.
[OK] aliyun.security: not detected.
[OK] Completed with 0 warning(s).
如果看到 residuals detected、still has active service/process evidence 或 uninstall incomplete,说明脚本检测到了残留,不应把这次操作当成成功。
想再次确认,可以重新运行同一条一键命令。已经清理干净的组件应该显示:
aliyun.assistant not-found
aliyun.monitor not-found
aliyun.security not-found
常见问题
卸载云监控后,为什么控制台还可能看到 CPU 和网络流量?
云厂商的一部分基础指标可以在宿主机或虚拟化层采集,并不一定依赖虚拟机内部的 Guest Agent。因此“控制台还有基础监控曲线”和“操作系统里的监控 Agent 已经卸载”并不冲突。
为什么不直接复制网上那些 pkill + rm -rf 教程?
很多旧教程针对的是数年前的固定版本,而且命令范围较宽。这个项目更强调先识别真实进程与确定路径,尽量避免把名称相近但不属于目标 Agent 的文件或进程一起删除。
GitHub 连不上,可以直接使用网上的 GitHub 加速站吗?
技术上可能可以,但不推荐直接通过未知代理下载并以 root 权限执行脚本。更稳妥的做法是电脑端下载后上传,或者由你自己维护可信镜像并核对 SHA-256。
执行后还能重新安装这些 Agent 吗?
多数云厂商都提供重新安装方式,但不同平台、不同 Agent 的恢复方法并不相同。如果未来仍需要控制台远程命令、安全中心、Guest OS 监控等能力,应按对应云厂商的官方文档重新安装。
脚本会不会自动删除所有云厂商组件?
不会。一键模式只处理识别到的可选组件;关键 Guest Agent 默认保护,未知组件也不会猜测性删除。









暂无评论内容