本页目录 8 个章节
使用 SSH 密钥无需密码即可登录,而且远比密码难以攻破。您将在自己的电脑上创建一个 Ed25519 密钥对,将公钥登记到 PowerDedi,并安装到已在运行的服务器上。您只需要一个终端:Linux 和 macOS 上的“终端”,或 Windows 10 和 11 上的 PowerShell。
SSH 密钥的工作原理
密钥对由两部分组成。私钥保存在您的电脑上,由密码短语保护,绝不与他人共享。公钥是一行文本,可以复制到任何地方:客户中心,或者服务器上的 ~/.ssh/authorized_keys 文件。Ed25519 密钥长度短、速度快,我们提供的所有操作系统都支持它。
如果某个较旧的服务只接受 RSA,请用 ssh-keygen -t rsa -b 4096 创建 RSA 密钥。如果使用 FIDO2 硬件安全密钥,ssh-keygen -t ed25519-sk 会将私钥保存在该设备上。
在 Linux 或 macOS 上生成密钥
ssh-keygen -t ed25519 -C "alice-laptop"
接受默认位置 ~/.ssh/id_ed25519,并设置一个密码短语。-C 后面的注释仅用于日后帮您识别该密钥。然后显示公钥,接下来的步骤中需要粘贴它:
cat ~/.ssh/id_ed25519.pub
为避免每次连接都输入密码短语,每个会话只需用 ssh-add ~/.ssh/id_ed25519 将密钥加载到 SSH 代理一次。在 macOS 上,ssh-add --apple-use-keychain ~/.ssh/id_ed25519 还会将密码短语保存到您的钥匙串中。
在 Windows 上生成密钥
Windows 10 和 11 自带 OpenSSH 客户端。如果 PowerShell 找不到 ssh-keygen,请在“设置”的可选功能中添加 OpenSSH 客户端。然后在 PowerShell 中运行:
ssh-keygen -t ed25519 -C "alice-laptop"
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
密钥对保存在 C:\Users\<you>\.ssh\ 中。要使用 SSH 代理,请在以管理员身份运行的 PowerShell 窗口中执行下面的前两条命令,再以您自己的普通用户身份执行最后一条:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
将密钥添加到客户中心
- 打开账户 → SSH 密钥,添加一个新密钥。
- 粘贴完整的公钥行(从
ssh-ed25519一直到注释),并为它取一个便于识别的名称。 - 在订购服务器、重装系统或启用救援模式时选择该密钥。
保存在客户中心的密钥会在服务器部署、重装系统或启动进入救援模式时自动安装。它们不会推送到已在运行的服务器上:请按下文所述自行添加。
为运行中的服务器添加密钥
在 Linux 或 macOS 上,ssh-copy-id 会追加密钥并设置正确的权限:
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@203.0.113.10
Windows 没有 ssh-copy-id。下面这行 PowerShell 命令可以完成同样的工作:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh alice@203.0.113.10 "umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"
如需在服务器上手动添加,请将密钥单独放在 ~/.ssh/authorized_keys 中的一行,并设置严格的权限。如果该目录或文件可被其他用户写入,SSH 服务端会忽略其中的密钥:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys # paste the key, one key per line
chmod 600 ~/.ssh/authorized_keys
在 AlmaLinux 和 Rocky Linux 上,如果正确的密钥仍被拒绝,请用 restorecon -Rv ~/.ssh 恢复 SELinux 标签。
用 ~/.ssh/config 简化登录
添加一个主机条目后,就不必再输入地址、用户名和密钥路径。在 Windows 上,该文件为 C:\Users\<you>\.ssh\config,语法相同:
Host pd-fra1
HostName 203.0.113.10
User alice
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
现在运行 ssh pd-fra1 即可连接,scp、rsync 和 Git 也会使用同一条目。IdentitiesOnly yes 可阻止 SSH 逐一尝试代理中的所有密钥,从而避免“Too many authentication failures”错误。
在 PuTTY 中使用密钥
PuTTY 使用自己的 .ppk 密钥格式。打开 PuTTYgen,选择 Conversions → Import key,选中您的 id_ed25519 文件,输入其密码短语,然后点击 Save private key。在 PuTTY 中,于 Connection → SSH → Auth → Credentials 下选择该 .ppk 文件。如果您是直接在 PuTTYgen 中生成的密钥,请将标有“Public key for pasting into OpenSSH authorized_keys file”的文本框中的内容复制到客户中心。
移除不再可信的密钥
如果笔记本电脑丢失或有同事离职,请吊销对应的密钥:在每台服务器上、针对包括 root 在内的每个用户,从 ~/.ssh/authorized_keys 中删除该密钥所在的行,并在账户 → SSH 密钥中将其移除。如果是您自己的密钥,请先安装新密钥,以免失去访问权限。



