加固 VPS:密钥替代密码
购置了 Contabo VPS,想要在服务器层面加固防护,遂做此笔记。
1. 配置 SSH 密钥登录
在本地生成一对 SSH 密钥对,使用 ed25519 算法而非老旧的 RSA。
ssh-keygen -t ed25519
密钥默认保存在 ~/.ssh/id_ed25519,可以更改位置。生成过后,需要将公钥放到服务器上,具体的原理在此不赘述。最方便的做法是使用 ssh-copy-id,如下:
ssh-copy-id <username>@<ip_address>
SSH 登录到 VPS,测试能否使用保存在本地的 SSH 密钥直接登录。如果在 ssh-keygen 时设置了 Passphrase,此时也需要输入 Passphrase 才能登录。如果觉得麻烦,可以使用 ssh-agent。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519 # 之后会要求输入 Passphrase
然后再次 SSH 登录到服务器测试,看看能否不输入 Passphrase 直接登录。最后,要保存好 SSH 密钥,最好离线备份在移动硬盘里,或者重复上述步骤生成一个备用密钥放在别处。
2. 禁用密码登录和 Root 登录
密码登录很容易被暴力破解,能够用 SSH 密钥登录之后最好禁用密码登录。这一步要额外小心,不然有可能被锁在服务器外面。
修改服务器上的 SSH 配置:
vim /etc/ssh/sshd_config
找到 PasswordAuthentication(允许密码认证)和 PermitRootLogin(允许 Root 登录),删掉前面的 # 注释,把 yes 改成 no。保存,然后 sudo systemctl restart ssh。
参考
2026-01-26