← 所有文章

计算机技术

VPS 安装 Linux 系统后的常见操作

记录安装 VPS 安装 Debian 后的常见操作。

约 3 分钟更新于 2026年9月3日

以 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