如何生成免密码连接服务器的SSH 密钥?
使用SSH 密钥允许您无需密码即可登录服务器。站长非常喜欢用这个方法管理自用的linux云主机,毕竟服务器多了,密码如果长期设置为一样的,并且不愿意定期更改,将给服务器安全带来不稳定因素。本文简单描述了使用 Linux、Mac 或 Windows 以 OpenSSH 格式创建 SSH 密钥,适用于所有linux服务器实例。
使用 OpenSSH 创建 SSH 密钥
OpenSSH 是标准的,存在于 macOS 和大多数 Linux 发行版中。同样Windows 10 用户也可以安装,下方提供了安装说明。按照以下步骤使用 OpenSSH 实用程序创建 SSH 密钥。
1. 运行 ssh-keygen,替换您的电子邮件地址。
ssh-keygen -t ed25519 -C "admin@vpsvsvps.com"
命令中的邮箱替换成你自己常用的。
注意:如果您使用不支持 Ed25519 算法的遗留系统,请使用:
ssh-keygen -t rsa -b 4096 -C "admin@vpsvsvps.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
2. 按回车键将密钥保存在默认位置
Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/example/.ssh/id_ed25519):
3. 您可以为您的密钥输入密码。建议使用密码,但您也可以按回车绕过此提示。如果您使用密码,除非您还使用ssh-agent,否则每次使用密钥时都会输入密码短语。
Enter passphrase (empty for no passphrase): Enter same passphrase again:
4. 您的密钥已生成并保存。
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]-----+
5. 备份私钥。密钥一旦丢失将无法找回。
6. 在使用 SSH 密钥连接到现有服务器之前,您需要将公钥添加到authorized_keys文件中
在 Windows 10 上安装 OpenSSH
OpenSSH 客户端是 Windows 10 1809 的可安装组件。
1. 启动“设置”,然后转到“应用程序” > “应用程序和功能” > “管理可选功能” 。
2. 查看列表中是否已安装OpenSSH 客户端。如果没有,则单击添加功能。
3. 找到OpenSSH 客户端,然后单击安装。
4. 或者,您也可以使用 PowerShell 安装 OpenSSH 客户端。
安装 OpenSSH 后,请按照上述说明创建 SSH 密钥。
使用 PuTTYgen 在 Windows 上创建 SSH 密钥
PuTTYgen 是 PuTTY 实用程序的一部分。它适用于所有版本的 Windows。
1. 下载最新版本的 PuTTY 实用程序。我们推荐 MSI Windows 安装程序包。
2. 安装包并运行 PuTTYgen。
3. 在程序窗口的底部,选择EdDSA类型。
4. 在右下角,将“用于生成此密钥的曲线”设置为Ed25519 (255 bits)。
5. 单击生成按钮。然后,在空白区域移动鼠标,生成一些随机数据。
6. 输入密钥注释,以便以后更容易识别密钥。
7. 必须妥善保管私钥,防止未经授权的使用。我们建议输入密钥密码以保护 SSH 密钥。
8. 单击保存私钥并安全地存储它。如果丢失,则无法恢复此文件。此文件是 PuTTY 格式的公钥/私钥对。您可以在以后使用 PuTTYgen 重新导入此文件以导出或转换您的公钥格式。
9. 单击转换>导出 OpenSSH 密钥。保存此文件并安全地存储它。该文件是 OpenSSH 格式的 SSH 私钥。如果您使用 PuTTY 以外的 SSH 客户端,则可能需要此文件。
10 . 选择用于粘贴到 OpenSSH authorized_keys 文件框中的公钥文本并将其保存到文件中。这是您的 OpenSSH 格式的公钥。
恢复丢失的公钥
如果您有权访问私钥,则可以使用 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 向您的服务器进行身份验证。
使用选项指定要传输的公钥-i。将示例替换为您的用户名和服务器的 IP 地址。
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 位。
更多其他相关文章
有关管理 SSH 密钥的更多信息,请参阅我们的其他文章:
使用 SSH 密钥部署新服务器
如何添加和删除 SSH 密钥
使用 SSH 密钥连接到服务器
为非根用户使用 SSH 密钥
本文由 vps主机对比评测网 刊发,转载请注明出处