一台全新的 VPS 上线后,SSH 端口 22 会在几分钟内被全球扫描机器人发现,然后开始用常见密码字典暴力破解。以下三招能挡住 99% 的攻击。

第 1 招:SSH 密钥登录

密码可以被暴力破解,但 256 位的 Ed25519 密钥破解需要的时间比宇宙年龄还长。

# 在本地电脑生成密钥(不要输密码短语以方便自动化)
ssh-keygen -t ed25519 -C "my-vps-key"

# 复制公钥到 VPS
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的IP

# 测试密钥登录
ssh -i ~/.ssh/id_ed25519 root@你的IP

成功后,再关闭密码登录(见下)。

第 2 招:修改 SSH 端口

# 编辑 SSH 配置
nano /etc/ssh/sshd_config

# 修改/添加:
Port 22222              # 改成任意 1024-65535 之间的端口

# 重启 SSH
systemctl restart sshd

重要:新终端测试新端口能连上后,再关闭旧端口的会话!

第 3 招:禁止密码登录 + 禁止 root 登录

nano /etc/ssh/sshd_config

# 确保以下配置:
PermitRootLogin no           # 禁止 root 直接 SSH
PasswordAuthentication no    # 禁止密码登录
PubkeyAuthentication yes     # 只允许密钥登录

# 重启
systemctl restart sshd

以后登录只能用普通用户 + 密钥:ssh -p 22222 yourname@你的IP,需要 root 权限时用 sudo

验证安全性

# 查看最近的失败登录尝试
grep "Failed password" /var/log/auth.log | tail -20
# 如果配置正确,应该看不到新的失败记录了

多台设备用同一个 VPS

把每台设备的公钥都追加到 VPS 的 ~/.ssh/authorized_keys 文件中:

cat ~/.ssh/new_device_key.pub >> ~/.ssh/authorized_keys