SSH 密钥允许您在没有密码的情况下登录服务器。本指南介绍如何使用 OpenSSH 格式的 Linux、Mac 或 Windows 工作站创建 SSH 密钥,适用于Vultr服务器实例。
使用OpenSSH创建SSH密钥
OpenSSH 是标准配置,应该存在于macOS 和大多数 Linux 发行版上。我们还为 Windows 10 用户则需要额外的安装。按照以下步骤使用 OpenSSH 实用程序创建 SSH 密钥。
生成您的密钥 ,命令行中替换成您的电子邮件地址。ssh-keygen
$ ssh-keygen -t ed25519 -C "your_email@example.com"
> 注意:如果您使用不支持 Ed25519 算法的旧系统,请使用:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
默认情况下,密钥存储在 ~/.ssh 目录中。大多数 SSH 客户端会自动使用以下默认文件名:
算法:ED25519(首选)
- 公钥:id_ed25519.pub
- 私钥:id_ed25519
算法:RSA(至少 2048 位密钥大小)
- 公钥:id_rsa.pub
- 私钥:id_rsa
算法:DSA(已弃用)
- 公钥:id_dsa.pub
- 私钥:id_dsa
算法:ECDSA
- 公钥:id_ecdsa.pub
- 私钥:id_ecdsa
按下回车键保存在默认位置。
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/example/.ssh/id_ed25519):
您可以输入密钥的密码。我们建议使用密码,但您可以按下回车以绕过此提示。如果您使用密码,则每次使用该密钥时都会输入该密码,除非您还使用ssh-agent。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
您的密钥已生成并保存。
Your identification has been saved in /Users/example/.ssh/id_ed25519. Your public key has been saved in /Users/example/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:qx6prR4Zo+VU7Fl8yivXzzzzzzzzJ/9NRnPbrC20w7g example@example.com The key's randomart image is:
+--[ED25519 256]--+
| | | o . | | o B o + . | | B + + o + | | = = S o o o | | = + = O + + | | . + B B = * . | | = O + o | | .+o=.. E . |
+----[SHA256]-----+
备份私钥。如果丢失,密钥将无法恢复。
在使用 SSH 密钥连接到现有服务器之前,您需要将公钥添加到文件中。您还可以将公钥添加到您的 Vultr 帐户。
在 Windows 10 上安装 OpenSSH
OpenSSH 客户端是 Windows 10 1809 的可安装组件。
- 启动“设置”,然后转到“应用”>“应用和功能”>“管理可选功能”。
- 扫描此列表以查看是否已安装 OpenSSH 客户端。如果没有,请单击添加功能。
- 找到 OpenSSH 客户端,然后单击安装。
- (可选)还可以使用 PowerShell 安装 OpenSSH 客户端。
安装 OpenSSH 后,请按照上述说明创建 SSH 密钥。
使用 PuTTYgen 在 Windows 上创建 SSH 密钥
PuTTYgen 是 PuTTY 实用程序套件的一部分。它适用于所有版本的 Windows。
- 下载最新版本的 PuTTY 实用程序。建议使用 MSI Windows Installer 程序包。
- 安装软件包并运行 PuTTYgen。
- 在程序窗口的底部,选择键类型。
EdDSA
- 在右下角,将“用于生成此键的曲线”设置为 。
Ed25519 (255 bits)
- 单击“Generate ”按钮。然后,在空白区域移动鼠标以生成一些随机数据。
- 输入Key comment ,以便以后更易于识别密钥。
- 私钥必须安全无虞,防止未经授权的使用。我们建议输入密钥密码来保护 SSH 密钥。
- 单击Save private key并安全存储。如果丢失此文件,则无法恢复。此文件是 PuTTY 格式的公钥/私钥对。您将来可以使用 PuTTYgen 重新导入此文件,以导出或转换公钥的格式。
- 单击 Conversions > Export OpenSSH key。保存此文件并安全地存储。此文件是 OpenSSH 格式的私有 SSH 密钥。如果您使用 PuTTY 以外的 SSH 客户端,则可能需要此文件。
- 选择“Public key for pasting into OpenSSH authorized_keys file”框中的文本,并将其保存到文件中。这是 OpenSSH 格式的公钥。如果要将此密钥添加到您的 Vultr 帐户,您还需要将其复制并粘贴到用户面板。
恢复丢失的公钥
如果您有权访问私钥,则可以使用 OpenSSH 恢复公钥。
将选项和带有选项的私钥路径传递给 ssh-keygen。当 ssh-keygen 重新生成公共 SSH 密钥时,您可以将输出重定向到您选择的文件。-y
-f
例如,要重新生成公钥并将输出发送到:~/example_key
~/example_key.pub
$ ssh-keygen -y -f ~/example_key > ~/example_key.pub
如果为密钥设置了密码,系统将提示您输入密码。
更改密钥的密码
您可以使用该选项更改私钥上的密码,并使用该选项传递密钥名称。-p
-f
$ ssh-keygen -p -f ~/example_key
在提示符下输入您的新旧密码(两次)。
查看钥匙的指纹
使用该选项打印密钥的 SHA256 指纹,并使用该选项传递密钥名称。-l
-f
$ ssh-keygen -l -f example_key
输出如下所示:
3072 SHA256:pqdEtfbmIRwqTk9PpApa7DMvAxqCA577vJ/FcgyUM0Q root@localhost (RSA).
将密钥传输到服务器
OpenSSH 包含一个实用程序,用于将密钥传输到您的服务器。使用此实用程序时,必须使用 SSH 向服务器进行身份验证。
使用该选项指定要传输的公钥。将该示例替换为您的用户名和服务器的 IP 地址。-i
$ ssh-copy-id -i ~/.ssh/example_key.pub example_user@192.0.2.123
系统将提示您向服务器进行身份验证,并将密钥传输到远程服务器的文件中。authorized_keys
关于 SSH 密钥格式
OpenSSH 6.5 在 2014 年引入了ED25519密钥,它们在大多数操作系统上都可用。据信,ED25519密钥比 RSA 更安全,性能更好。如果使用 RSA 密钥,美国国家科学技术研究院建议密钥大小至少为 2048 位。