密码可能被猜中、被重放,也可能出现在数据泄露中。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 发送。
通过客户中心,这是最简单的方式:
- 打开我的服务,然后打开您的 VPS。
- 进入 访问与安全 选项卡。
- 在 SSH 密钥 卡片中粘贴您的公钥。该字段接受每行一个密钥,支持
ssh-rsa、ssh-ed25519和ecdsa格式。 - 点击 保存密钥。
出现提示「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,部署新的密钥,然后再将其关闭。