VPS 安装 Linux 系统后的常见操作
记录安装 VPS 安装 Debian 后的常见操作。
以 Debian / Ubuntu 系统为例。
更新系统
apt update
apt full-upgrade -y
服务器初始化时使用
full-upgrade能够正确处理需要增加/删除依赖的软件包升级。
如果升级了内核:
test -f /var/run/reboot-required && cat /var/run/reboot-required
必要时 reboot 。
配置 APT 源
. /etc/os-release
echo "$VERSION_CODENAME"
codename="$VERSION_CODENAME"
使用清华镜像:
cp -a /etc/apt/sources.list.d /etc/apt/sources.list.d.bak
cat > /etc/apt/sources.list.d/debian.sources <<EOF
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: ${codename} ${codename}-updates ${codename}-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://security.debian.org/debian-security
Suites: ${codename}-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
然后把旧 source 禁掉,避免重复:
mv /etc/apt/sources.list /etc/apt/sources.list.disabled 2>/dev/null || true
Debian 目前同时支持
.list和.sources,但 Debian 13 官方 release notes 已明确推荐 deb822.sources。(Debian Manpages)
backports 并不是必须开启。它适合需要某个较新软件时按需从 backports 安装,不应该把整个系统无脑升级到 backports。
如果服务器国际网络质量很好,直接保留官方 CDN https://deb.debian.org/debian 通常更加省事。
创建管理员用户
apt install sudo
adduser username
usermod -aG sudo username
检查 id username 应该能看到 groups=...,sudo 。
然后实际测试:
su - username
sudo whoami
应该输出 root 。在确认这个账号可以正常 sudo 之前,不要关闭 root SSH 。
配置 SSH 公钥
如果没有密钥,客户端:
ssh-keygen -t ed25519
上传:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
或者服务器端手动配置:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
添加公钥:
echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys
如果这是 root 帮另一个用户创建的,注意 ownership:
chown -R username:username /home/username/.ssh
SSH 加固
增加 drop-in:
cat > /etc/ssh/sshd_config.d/99-hardening.conf <<'EOF'
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
EOF
然后最重要的一步:
sshd -t
只有没有任何输出、返回成功之后才 reload SSH。
systemctl reload ssh
然后不要退出当前 SSH session,另开一个终端测试 ssh 和 sudo 都正常,才关闭原来的 root session。这一步非常重要,可以避免把自己锁在服务器外面。
配置防火墙
UFW 对单台普通 VPS 很方便:
apt install ufw
ufw allow OpenSSH
ufw default deny incoming
ufw default allow outgoing
ufw enable
ufw status verbose
如果 SSH 改成了例如 2222:
ufw allow 2222/tcp
一定先 allow 新端口,再修改 SSH / firewall。
UFW 本质是比较方便的防火墙管理层。如果是复杂服务器环境、Docker/Kubernetes、多网卡、路由/NAT,一般直接规划 nftables,而不是把所有规则都塞进 UFW。
Fail2Ban
apt install fail2ban
cat > /etc/fail2ban/jail.d/sshd.local <<'EOF'
[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
EOF
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
如果已经只允许 SSH key 登录,那么 SSH 密码暴力破解的实际威胁已经大幅下降,这时 Fail2Ban 属于可装可不装。
自动安装安全更新
这是你的笔记里比较值得增加的一项。
apt install unattended-upgrades
启用:
dpkg-reconfigure -plow unattended-upgrades
检查:
systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer
unattended-upgrades 就是 Debian 用于自动下载和安装安全等更新的标准机制,由 apt-daily-upgrade.service 等周期性执行。对于长期运行的公网 VPS,一般建议开启安全更新。
设置时区和时间同步
timedatectl
timedatectl set-timezone Asia/Shanghai
# 服务器也完全可以统一使用 UTC
timedatectl set-timezone UTC
# 检查
timedatectl status
重点确认 System clock synchronized: yes 。
设置 hostname
例如:
hostnamectl set-hostname web-01
检查:
hostnamectl
同时检查:
cat /etc/hosts
通常至少应该合理配置:
127.0.0.1 localhost
127.0.1.1 web-01
如果服务器很多,规范命名很有价值。
安装常用管理工具
# 基础包一般会有:
apt install -y curl wget git vim tmux htop jq rsync unzip zip tree lsof dnsutils net-tools iproute2 ca-certificates gnupg
# 其他(不一定全部需要,但故障排查时非常有用)
apt install -y ncdu iotop sysstat strace tcpdump traceroute mtr-tiny
检查当前监听端口
ss -lntup
应该知道每一个公网监听端口为什么存在。不需要的服务不运行,不需要的端口不开放。
检查磁盘和日志
df -h
df -i
lsblk
journalctl -p warning
# 查看启动错误:
journalctl -b -p err
# 查看 systemd 失败单元:
systemctl --failed
配置日志空间限制
小硬盘 VPS 特别值得做。
journalctl --disk-usage
mkdir -p /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/size.conf <<'EOF'
[Journal]
SystemMaxUse=500M
RuntimeMaxUse=100M
EOF
systemctl restart systemd-journald
具体限制应该根据磁盘大小调整,不需要所有服务器都固定成 500 MB。
Swap
swapon --show
free -h
小内存 VPS 如果没有 swap,可以考虑增加。例如分配 2 GiB Swap:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
可根据业务调整 Debian 使用 Swap 的倾向:
sysctl vm.swappiness
cat > /etc/sysctl.d/99-swap.conf <<'EOF'
vm.swappiness=10
EOF
sysctl --system
一般
vm.swappiness越低越不倾向使用 Swap,值越高越积极使用 Swap。10 是服务器上比较常见的一种人为调低设置,但并不是 Debian 必须进行的优化。
如果不需要 Swap 可以关闭:
- 临时关闭:
swapoff -a - 注释掉
/etc/fstab中的 Swap 行,如果永远不用了可以rm /swapfile。
检查用户
awk -F: '$3 >= 1000 {print $1,$3,$7}' /etc/passwd
以及:
last
lastlog