云服务器“减负”实战:一键重装成纯净 Debian 12(含善后加固清单)

云服务器“减负”实战:一键重装成纯净 Debian 12(含善后加固清单)

一、刚开机就吃满内存,问题出在哪

买一台 1 核 1G 的轻量云服务器,装完系统什么都没跑,free -h 一看内存已经用掉一半以上,这种情况在阿里云、腾讯云、华为云的默认镜像上很常见。

原因通常不是系统本身,而是镜像里预装的厂商组件。以阿里云为例,系统里常驻着 AliYunDun、AliYunDunMonitor、aliyun-service 等安全与监控进程(早期叫安骑士,现在是云安全中心客户端)。这类进程有两个特点:

  • 常驻且占用不低,小内存机器上尤其明显;
  • 带自保护,直接 kill 或 systemctl stop 往往会被重新拉起,甚至触发告警。

除此之外,厂商定制镜像还会额外占用系统盘空间,并预置一些你用不到的服务与端口。想彻底清干净,靠删进程是治标不治本的。

真正干净的做法只有一个:把系统盘整个抹掉,装一份官方原版系统。

二、三条路线,怎么选

方案做法优点代价
手动清理停服务、删文件、改自启动不用重装清不干净,系统更新后可能回归,操作风险高
挂 ISO 安装通过 IPMI/VNC 挂载官方镜像最正统多数云厂商不提供 ISO 挂载,独服才有
网络重装脚本把安装内核写入硬盘,重启后联网安装不需要 VNC、几分钟完成、可注入密钥会清空整块数据盘

对绝大多数 KVM 架构的云服务器来说,第三条是性价比最高的选择。

三、动手前的四个前提

  1. 确认是 KVM 虚拟化:OpenVZ、LXC 这类共享内核的架构装不了,脚本也不支持。可以用 systemd-detect-virt 看当前类型,返回 kvm 才可行。
  2. 备份数据:重装会清空整块硬盘(包括其他分区),没有回收站。
  3. 放行安全组端口:安装期间用 22 端口 SSH,部分场景还要用到脚本给出的临时 Web 端口,云控制台的安全组要放行。
  4. 能进控制台:万一装完网络没起来,只能靠商家后台的 VNC 或串口控制台救场。

另外看一眼配置:Debian 12 最低要求约 256MB 内存 + 1~1.5GB 硬盘,一般的小鸡都满足。

四、为什么选 bin456789/reinstall

一键重装脚本有不少,比较知名的有萌咖 InstallNET、leitbogioro/Tools、秋水逸冰版,以及这几年更新最勤的 bin456789/reinstall。它几个比较实在的点:

  • 不打包自制镜像,所有文件实时从官方源获取,装出来的就是原版系统;
  • 引导兼容性好,同时支持 BIOS 与 EFI,也支持 ARM 服务器;
  • 网络识别聪明,能处理 /32、/128、网关不在子网内、纯 IPv6、双网卡等特殊情况;
  • 支持直接注入 SSH 公钥,装完就是密钥登录,不用先设弱密码;
  • 对低配机器友好,比官方 netboot 需要的内存更少;
  • 国内机器可以用它提供的国内下载地址,避开 GitHub 直连。

它还有一个很实用的能力:装的过程中可以通过 SSH、HTTP 80、VNC 或串口看日志,装崩了也能连进去手动救砖。

需要提醒的是:它只支持 KVM,OpenVZ/LXC 用户需要另找方案(例如 OsMutation)。

五、实战:从旧系统到纯净 Debian 12

第 0 步:记录当前网络信息

重装前先记一下,出问题时能对照:

ip addr show
ip route show

第 1 步:安装基础依赖

apt-get update
apt-get install -y curl wget ca-certificates xz-utils

CentOS 系把 apt-get 换成 yum 即可。

第 2 步:下载重装脚本

国外机器:

curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh

国内机器(GitHub 直连不稳时用这个):

curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh

第 3 步:准备 SSH 密钥

密码登录迟早被扫,建议直接用密钥。在本地电脑生成(Windows PowerShell、macOS、Linux 通用):

ssh-keygen -t ed25519 -C "vps-root-key" -f ~/.ssh/vps_ed25519

查看公钥内容,整行复制:

cat ~/.ssh/vps_ed25519.pub

第 4 步:执行重装命令

方式 A:注入公钥(推荐)

bash reinstall.sh debian 12 --username root --ssh-key 'ssh-ed25519 AAAA...你的公钥'

方式 B:用密码

bash reinstall.sh debian 12 --username root --password '你的强密码'

注意:密码和公钥不能同时指定。脚本还支持几个常用参数:

参数作用
--ssh-port 2222装完直接改 SSH 端口
--web-port 8080指定安装日志的 Web 端口
--no-cloud-kernel部分机器用云内核会黑屏,加这个换普通内核
--hold 1只重启到安装环境,先验证网络连通性

第 5 步:记下脚本输出的信息

执行成功后会打印类似内容,Web 地址和端口先复制下来,后面看进度要用:

***** SET NEXTOS DEBIAN 12 *****
IPv4 Address: 172.xx.xx.xx
IPv4 Gateway: 172.xx.xx.xx
SSH Port: 22
WEB: http://你的IP/xxxxxx
Reboot to start the reinstallation.

第 6 步:重启,进入自动安装

reboot

之后 SSH 会断开,机器进入网络安装阶段。时间取决于机器到官方源的速度,一般 10~20 分钟,快的 5 分钟,慢的可能半小时以上。期间可以打开那个 Web 地址看日志滚动。

第 7 步:登录验收

安装完成后直接用密钥登录:

ssh -i ~/.ssh/vps_ed25519 root@你的IP

进去先跑几条命令确认:

cat /etc/os-release      # 确认是 Debian 12 (bookworm)
free -h                  # 看内存占用
df -h /                  # 看系统盘
ss -tulnp                # 看监听的端口,应该只剩 sshd

正常情况下内存占用会从几百 MB 降到一两百 MB,监听端口也只剩系统自带的服务。

六、重装之后的善后清单

系统装完只是开始,下面这些建议一次做完。

1. 更新系统

脚本为了速度不会在安装时更新软件包,第一件事是补上:

apt update && apt full-upgrade -y

需要的话重启一次:reboot

2. 加 Swap(小内存必做)

512MB~1GB 的机器不配 Swap,装 Docker 或编译时很容易被 OOM Killer 杀进程。

fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 开机自动挂载
grep -q '/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' >> /etc/fstab

再把内核参数调得"少用 Swap、优先物理内存":

cat > /etc/sysctl.d/99-swap.conf <<'EOF'
vm.swappiness = 10
vm.vfs_cache_pressure = 50
EOF
sysctl -p /etc/sysctl.d/99-swap.conf

3. 设置时区与时间同步

timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true
date

4. 加固 SSH

Debian 12 默认使用 /etc/ssh/sshd_config.d/ 里的片段,注意脚本自己也可能在这里留了文件,改端口或禁用密码时要一起看。

cat > /etc/ssh/sshd_config.d/99-hardening.conf <<'EOF'
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
EOF

sshd -t && systemctl reload ssh

改之前先确认新密钥能登录,否则会把自己锁在门外。

5. 防火墙

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status

以后装了什么服务(比如 443),再 ufw allow 443/tcp。

6. 防爆破

apt install -y fail2ban
systemctl enable --now fail2ban
fail2ban-client status sshd

7. 自动安全更新

apt install -y unattended-upgrades
cat > /etc/apt/apt.conf.d/20auto-upgrades <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
EOF

8. 开 BBR(可选,跨国线路提速)

cat > /etc/sysctl.d/99-bbr.conf <<'EOF'
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
sysctl -p /etc/sysctl.d/99-bbr.conf
sysctl net.ipv4.tcp_congestion_control

七、常见问题

Q:登录时报 REMOTE HOST IDENTIFICATION HAS CHANGED

系统重装后主机指纹变了,本地清掉旧记录即可:

ssh-keygen -R 你的IP

Q:重启后一直连不上

先看脚本给的 Web 日志地址;连不上说明还在装,或者网络没配好。这种情况只能从商家后台的 VNC 进去看屏幕。

Q:装到一半想反悔

只要还没重启,执行下面这条可以取消:

bash reinstall.sh reset

重启之后就来不及了,硬盘已经被覆盖。

Q:内存特别小(128MB 左右)能装吗

Debian 12 的底线大约是 256MB 内存。低于这个值建议先装更轻的系统(如 Alpine),或者换配置。

Q:装完发现 SSH 端口不是 22

如果用了 --ssh-port,新系统的端口就是指定的那个。另外注意 /etc/ssh/sshd_config.d/ 里脚本留下的配置文件优先级更高,改端口时要同时改。

Q:为什么别人说 3 分钟,我用了 30 分钟

3 分钟是极快机房的个例。实际耗时主要取决于「机器到 Debian 官方源」的下载速度,国内机器尤其明显。想快可以把安装源换到国内镜像,或用脚本提供的国内下载地址。

八、参考资料

本文在原帖思路基础上重新整理,补充了脚本官方参数、安装后的加固步骤与常见问题;命令以官方文档为准,执行前请先备份数据。

标签: VPS, DD, 重装系统, Debian, reinstall, 服务器安全, Swap
本文最后更新于: 2026-11-01 07:17:48

猜您喜欢

发表评论