精选

使用 SSH 密钥代替密码

发布于 21/08/2026 更新于 06/10/2026 74 次浏览
VPS Linux SSH Clés SSH

密码可能被猜中、被重放,也可能出现在数据泄露中。SSH 密钥则无法被猜中:私密部分永远不会离开您的电脑,服务器只知道公开部分。这是以最少的投入换取最大安全提升的配置变更。

如何生成 SSH 密钥对?

只需一条命令 ssh-keygen -t ed25519,即可创建一个私钥和一个公钥。

在您的电脑上(而不是在服务器上)打开终端(在 Windows 上可以使用 PowerShell):

ssh-keygen -t ed25519 -C "martin@portable-perso"
  • 接受建议的路径 ~/.ssh/id_ed25519。
  • 请设置一个密码短语。它会对私钥进行加密:即使您的电脑被盗,该密钥也无法被使用。

将创建两个文件:

  • id_ed25519——私钥。切勿将其复制到任何地方或通过任何渠道发送,也绝不能粘贴到工单中。
  • id_ed25519.pub——公钥。这是您需要部署到服务器上的文件。

显示公钥以便复制:

cat ~/.ssh/id_ed25519.pub

公钥只有一行,以 ssh-ed25519 AAAA… 开头。

如何将我的公钥部署到 VPS 上?

两种方式:将其粘贴到 访问与安全选项卡的 SSH 密钥卡片中,或者在终端中使用 ssh-copy-id 发送。

通过客户中心,这是最简单的方式:

  1. 打开我的服务,然后打开您的 VPS。
  2. 进入 访问与安全 选项卡。
  3. 在 SSH 密钥 卡片中粘贴您的公钥。该字段接受每行一个密钥,支持 ssh-rsa、ssh-ed25519 和 ecdsa 格式。
  4. 点击 保存密钥。

出现提示「Clés SSH mises à jour avec succès.」(SSH 密钥已成功更新)即表示保存成功,历史记录选项卡也会保留相应记录。这些密钥会被保留,并在每次重装 VPS 时自动重新注入:您无需重新操作。

通过终端,传统方法同样有效:

ssh-copy-id root@IP_ADDRESS

然后,在不关闭当前会话的情况下,确认密钥登录可以正常使用:

ssh root@IP_ADDRESS

如果服务器不再要求输入账户密码(最多只要求输入您密钥的密码短语),说明一切已配置就绪。

如何禁用 SSH 密码登录?

在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no,然后重新加载 SSH 服务——但只能在确认密钥登录可用之后进行。

只有在确认上一步之后才能进行此步骤,并且在整个操作过程中保持当前 SSH 会话处于打开状态。

编辑 /etc/ssh/sshd_config:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password

在重新加载服务之前检查语法——此命令可以避免 SSH 服务器无法重新启动:

sshd -t
systemctl reload ssh      # Debian, Ubuntu
systemctl reload sshd     # AlmaLinux, Rocky, CentOS Stream

现在,在另一个窗口中打开第二个会话。如果连接成功,您就可以放心关闭第一个会话。如果失败,请在仍然打开的会话中修正该文件。

如何备份我的私钥并为其他人授予访问权限?

将私钥备份在您保存密码的地方,并且只添加对方的公钥,每个密钥占一行。

  • 将您的私钥备份在您备份密码的地方:丢失私钥就等于失去访问权限,除非通过控制台重新操作。
  • 若要为第二个人授予访问权限,请在新的一行中添加其公钥。切勿在多人之间共享同一个私钥:这样会失去所有可追溯性,并且无法再单独撤销某个人的访问权限。
  • 若要撤销访问权限,请删除相应的行并重新保存。

如果我丢失了 SSH 密钥怎么办?

您并不会因此被锁在门外。请从客户中心打开救援控制台:它无需经过 SSH 即可为您显示机器的屏幕。使用管理员密码登录,临时恢复 PasswordAuthentication yes,部署新的密钥,然后再将其关闭。

这篇文章对您有帮助吗?