EQVPS

如何在 VPS 上设置 SSH 密钥认证

用一对 SSH 密钥替代密码登录:生成密钥、把公钥复制到服务器、测试登录,然后关闭密码登录。这是任何新 VPS 最大的一项安全提升,只需几条命令。

密码登录是一台新服务器最薄弱的环节:机器人扫描互联网,全天候用猜测敲打 22 端口。把密码换成一对 SSH 密钥能彻底移除这一攻击面,也是任何新 VPS 上第一件值得做的事。下面是完整流程,只需几条命令。

SSH 密钥如何工作

你生成一对密钥:私钥留在你的电脑上,公钥放到服务器上。服务器会质询任何连接者;只有持有匹配私钥的人才能应答。你可以随意分发公钥——要保护的是私钥。

1. 生成一对密钥(在你自己的电脑上)

ssh-keygen -t ed25519 -C "you@example.com"
# 按 Enter 接受默认路径 (~/.ssh/id_ed25519)
# 设置一个 passphrase 以增加安全性,或留空

这会创建两个文件:~/.ssh/id_ed25519(私钥——切勿分享)和 ~/.ssh/id_ed25519.pub(公钥)。

2. 把公钥复制到服务器

如果你还能用密码登录,简单的方法:

ssh-copy-id root@YOUR.SERVER.IP

没有 ssh-copy-id?手动来:

cat ~/.ssh/id_ed25519.pub | ssh root@YOUR.SERVER.IP \
  "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

3. 改动任何东西之前,先测试密钥

打开一个新的终端并登录——不应再被要求输入服务器密码:

ssh root@YOUR.SERVER.IP

如果成功,做下一步时保持这个会话开着,这样出错也不会把你锁在外面。

4. 关闭密码登录

在服务器上编辑 /etc/ssh/sshd_config

sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart ssh    # 有些发行版服务名为 sshd

从此只有你的密钥能进入,22 端口上持续的暴力破解噪声就直接被弹开了。

诚实的提醒

下一步

SSH 密钥是加固服务器的第一步。搭配一个防火墙——见如何配置 UFW 防火墙如何设置 fail2ban——并在对外暴露任何东西之前走一遍新 VPS 安全清单。在无 KYC、加密货币付款的 VPS 上,密钥也是让访问权真正归你所有的方式。

常见问题

为什么用 SSH 密钥而不是密码?

密码可以被猜测或暴力破解;机器人不停地敲打 22 端口。一对 SSH 密钥几乎无法被猜到,而一旦你关闭密码登录,那些暴力尝试就直接失败。它也更方便——你无需每次都输入密码就能登录。

公钥和私钥有什么区别?

这对密钥是一起生成的。私钥(id_ed25519)留在你自己的电脑上,永不共享。公钥(id_ed25519.pub)复制到服务器。谁都可以安全地持有你的公钥;只有匹配的私钥才能登录,所以要守护好私钥。

该生成 ed25519 还是 RSA?

现代场景一律用 ed25519:密钥更短、更快、且安全。只有在必须连接不支持 ed25519 的老系统时才用 RSA(至少 4096 位)。下面的命令使用 ed25519。

如果我弄丢了私钥怎么办?

你就失去了那条登录途径。如果密码登录还开着,用它添加一把新密钥;如果你关掉了密码,用服务商的控制台(EQVPS 有浏览器控制台)进去并添加新公钥。请备份你的私钥,并考虑再加一把密钥,这样丢失一把也不会被锁在门外。

完全关闭密码登录安全吗?

安全——前提是你的密钥已经生效,并且你确认能用它登录。在关闭当前会话之前,先在第二个终端里测试密钥,这样出错也不会把你锁在外面。之后,关闭密码就彻底移除了暴力破解的攻击面。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。