如何在 Windows 10 中生成 SSH 密钥?

linuxoperating systemopen source

简介

SSH 是 Secure Shell 的缩写,是一种加密协议,用于在不安全的网络(例如互联网)上为两台计算机提供安全连接。它允许用户远程安全地访问和控制另一台计算机或服务器。SSH 的工作原理是加密两台计算机之间发送的所有数据,包括用于登录的任何用户名和密码。

为了在两台计算机或服务器之间建立安全的 SSH 连接,SSH 密钥是必不可少的。SSH 密钥是一对加密密钥 - 一个公钥和一个私钥。

私钥保存在用户的本地计算机上,而公钥则上传到被访问的远程服务器或计算机。当用户尝试通过 SSH 与其他设备安全连接时,公钥可作为本地设备的标识。

了解 SSH 密钥生成过程

什么是 SSH 密钥?

SSH 密钥(也称为公钥加密密钥)是用于保护两台设备之间通信的加密代码。它由两个密钥组成:一个存储在本地计算机上的私钥和一个与远程服务器共享的公钥。这两个密钥协同工作,通过加密和解密数据来建立安全通信。

SSH 密钥如何工作?

当您尝试使用 SSH 连接到远程服务器时,您的本地计算机会向服务器发送其公钥进行身份验证。如果服务器识别并信任您的公钥,它将生成一条唯一的加密消息,该消息只能使用存储在本地计算机上的私钥解密。

为什么需要生成 SSH 密钥?

在使用远程服务器时,生成 SSH 密钥至关重要,因为它可以在无需密码的情况下实现机器之间的安全通信。密码可能会被泄露或被盗,但由于 SSH 密钥是特定于每个用户/机器组合的唯一代码,因此它们比传统的基于密码的身份验证方法更安全。

准备在 Windows 10 中生成 SSH 密钥

检查您的系统上是否安装了 OpenSSH 客户端。

在生成 SSH 密钥之前,您需要确保您的 Windows 10 系统上已安装 OpenSSH 客户端。要检查是否已安装,您可以使用以下步骤 -

  • 按"Windows + X"键并从选项中选择"Windows PowerShell(管理员)",以管理员身份打开 PowerShell。

  • 打开 PowerShell 后,输入命令"ssh"并按 Enter。

  • 如果已安装 OpenSSH 客户端,您将看到其命令及其用法的列表。

如果尚未安装,您将收到一条错误消息,指出"ssh"命令无法识别。

如果尚未安装 OpenSSH 客户端,请安装。

在 Windows 10 上安装 OpenSSH 客户端 -

  • 点击"开始"菜单中的齿轮图标或按"Windows + I"转到"设置"。

  • 点击"应用"。

  • 向下滚动并点击"可选功能"。

  • 点击"+ 添加功能"。

  • 从列表中找到并选择"OpenSSH 客户端"。

  • 点击"安装"。

安装过程可能需要几分钟,具体取决于您的网速和系统配置。完成后,您可以按照上述步骤 2 检查 OpenSSH 客户端是否已成功安装 - 这次应该不会返回任何错误;相反,会显示可用命令列表,表明它已在您的 Windows 10 设备中正确设置。

在 Windows 10 中生成 SSH 密钥

确保 OpenSSH 客户端已安装在您的 Windows 10 系统中后,您可以继续生成 SSH 密钥。此过程涉及使用 PowerShell(Windows 的命令行界面工具)来生成密钥对。以下步骤将指导您完成此过程 -

以管理员身份启动 PowerShell

以管理员身份启动 PowerShell -

  • 按下"开始"按钮并搜索"PowerShell"。

  • 右键单击"Windows PowerShell",然后选择"以管理员身份运行"。

以管理员身份运行 PowerShell 后,您将能够执行需要提升权限的命令。

输入命令生成密钥对

在 PowerShell 中,输入以下命令生成 SSH 密钥对 -

ssh-keygen -t rsa -b 4096

此命令将创建一个新的 RSA (Rivest-Shamir-Adleman) 密钥对,其位长为 4096,这比短密钥更安全。您可以根据需要调整此值。

选择密钥对的保存位置

输入上述命令后,PowerShell 将提示您输入密钥对的存储文件位置。您可以按 Enter 键接受默认位置,也可以指定您自己的目录路径。

例如 −

输入保存密钥的文件 (/c/Users/username/.ssh/id_rsa):

默认情况下,SSH 密钥保存在"C:\Users\.ssh"下。您可以按 Enter 键接受此路径,或根据需要输入其他文件位置。

设置密码以增强安全性

然后,系统将提示您输入可选密码以增强安全性。密码就像保护您私钥的密码一样。

如果有人获得了您的私钥,他们将无法在不知道密码的情况下使用它。

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

您可以选择设置一个复杂且唯一的密码,或者将其留空(表示无密码)。

确认密钥已成功生成

输入您首选的文件位置和可选密码后,PowerShell 将生成密钥对并显示一条确认消息 -

Your identification has been saved in /[filepath]/id_rsa. 
Your public key has been saved in /[filepath]/id_rsa.pub. The key fingerprint is: 
[unique code] The key's randomart image is: 
+--[ RSA 4096]----+ |[ascii art] | +-----------------+ 

将您的公钥添加到远程服务器

从本地计算机复制您的公钥

有两种方法可以从本地计算机复制您的公钥:使用 PowerShell 命令或使用记事本或其他文本编辑器手动复制。

要使用 PowerShell 复制您的公钥,首先以管理员身份打开 PowerShell。然后运行以下命令 -

powershell Get-Content ~/.ssh/id_rsa.pub | ssh user@host 'cat >> .ssh/authorized_keys'

将"user"和"host"替换为您要访问的远程服务器的用户名和 IP 地址。此命令将从本地计算机复制您的公钥,并将其附加到远程服务器上的authorized_keys文件中。

将公钥粘贴到远程服务器

通过 PowerShell 或手动复制公钥后,最后一步是将其粘贴到每个远程服务器的 authorized_keys 文件中,以便它们识别并接受来自此特定 SSH 密钥对的连接。大多数 Linux 服务器的此文件位于 `~/.ssh/authorized_keys`。

如果此文件尚不存在,请在该位置创建一个。现在,使用 SFTP 客户端或类似 PuTTY 的 PSCP 实用程序(允许在两台计算机之间安全地复制文件)将公钥复制到远程服务器。

结论

生成 SSH 密钥对并将公钥添加到远程服务器是确保计算机与远程服务器之间安全高效通信的关键步骤。

以上详细介绍了如何在 Windows 10 上使用 OpenSSH 客户端轻松生成 SSH 密钥对,以及如何通过 PowerShell 复制或使用记事本等文本编辑器手动复制公钥并将其添加到远程服务器,最后将公钥粘贴到每个远程服务器各自的 authorized_keys 文件中。


相关文章


有用资源