跳到主要内容

生成 SSH 密钥:Windows 与 macOS/Unix(PowerShell,PuTTY)

SSH 密钥为 SSH(安全外壳)连接提供了一种比传统基于密码的登录更安全、更便捷的替代方案。通过 SSH 连接服务器时,无需用户名/密码。取而代之的是,独特的公钥和私钥提供安全的身份验证。
本文将引导您如何生成和使用 SSH 密钥以实现安全的服务器访问。

  • 什么是 SSH 密钥,它是如何工作的?
  • 使用 SSH 密钥的好处
  • 如何生成 SSH 密钥
  • 如何使用 SSH 连接到您的服务器
  • 总结

什么是 SSH 密钥,它是如何工作的?

SSH 密钥是成对生成的,包含一个 公钥 和一个 私钥

  • 私钥 - 这是保存在您本地计算机上的密钥。(请勿与任何人分享。)
  • 公钥 - 这是放置在您想连接的服务器上的密钥,以便服务器能匹配您的私钥。

当您连接到服务器时,您的 SSH 客户端使用私钥验证您的身份,服务器则通过公钥进行检查。如果两者匹配,您将获得远程访问服务器的权限。这样就无需密码,使过程更安全、更简单。


使用 SSH 密钥的好处

  • 安全认证 :SSH 密钥是一种安全的方式,用于验证远程服务器上的用户和系统,替代了安全性较低的密码方法。
  • 加密通信 :使用 SSH 密钥时,设备间的通信是加密的,确保在远程访问或文件传输过程中敏感且重要数据的安全交换。
  • 安全访问自动化 :SSH 密钥允许自动化脚本和流程安全访问服务器或其他远程设备,无需每次手动输入凭据。
  • 远程服务器访问 :SSH 密钥用于远程访问服务器,使您能够安全地管理网站或数据库,避免使用密码带来的风险。
  • 增强安全性 :SSH 密钥消除了密码泄露的风险,因为私钥不会通过网络传输,从而降低被截获的风险。
  • 便捷性 :使用 SSH 密钥,无需记忆复杂密码,实现无密码认证,使远程服务器访问更快、更方便。
  • 更强的加密 :与传统密码认证方法不同,SSH 密钥使用非对称加密,提供更强的加密,确保高级别的数据保护。

如何生成 SSH 密钥

本节将介绍如何在不同平台上生成 SSH 密钥。

  • 在 Windows 中使用 PowerShell 生成 SSH 密钥
  • 在 Unix 或 macOS 终端生成 SSH 密钥
  • 在 Windows 中使用 PuTTY 生成 SSH 密钥

在 Windows 中使用 PowerShell 生成 SSH 密钥

Windows 10 内置了 OpenSSH,您可以在命令提示符或 PowerShell 中使用。

  1. Windows + X 或打开 开始 菜单,启动 PowerShell。
  2. 在 PowerShell 中输入以下命令以生成 SSH 密钥对。
ssh-keygen
  1. 当看到以下提示时,按 Enter
Enter a file in which to save the key (C:\Users\<username>\.ssh\id_rsa):
  1. 系统会再次提示您设置密码短语以增强安全性。
  • 如果您想要额外的安全保护,请输入密码短语,然后按 Enter
  • 如果您想跳过此步骤,直接按两次 Enter
  1. 完成后,您将看到类似以下的提示:
Your identification has been saved in C:\Users\<username>\.ssh\id_rsa.  
Your public key has been saved in C:\Users\<username>\.ssh\id_rsa.pub.
The key fingerprint is:
SHA256: xxxxxxxxxxxxxxx...
  1. 要检查密钥是否成功创建,请通过运行以下命令进入 .ssh 目录。
cd ~\.ssh

您应该会看到以下两个文件:

  • id_rsa(私钥)
  • id_rsa.pub(公钥)
  1. 若要继续下一步,您需要将私钥转换为 .ppk 格式。为此,请下载并打开 PuTTYgen 应用程序。请注意,以下步骤特指使用 PuTTY。
  2. 点击 Load 按钮,找到您生成的私钥。
    PuTTY Key Generator - Load your private key
  3. 输入您的 SSH 密钥密码短语(如果之前设置了)。
    PuTTY Key Generator -  Enter the passhrase for your SSH keys
  4. 点击 Save private key 按钮,生成 .ppk 文件。
    PuTTY Key Generator - Save the PPk file
  5. SSH 密钥对生成后,将 公钥 添加到您要连接的服务器。这样服务器就能使用公钥对您进行身份验证。

详情请参见《在账户管理器中管理 SSH 密钥》文章,了解如何将公钥添加到账户管理器的 SSH 管理 面板。

在 Unix 或 macOS 终端生成 SSH 密钥

本节适用于 Unix 类操作系统上的 OpenSSH 用户,包括 Linux、macOS 和 BSD。

  1. 启动您的终端应用程序。
  2. 在终端中输入以下命令。
ssh-keygen -t rsa -b 4096
  1. 当看到提示“Enter file in which to save the key”时,按 Enter
  2. 输入一个安全的密码短语,然后按 Enter。
  3. 再次输入密码短语以确认,然后按 Enter。
  4. 您将收到成功生成密钥的消息,包含密钥的详细信息。
username@localhost ~ $ ssh-keygen -t rsa -b 4096  
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<username>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/<username>/.ssh/id_rsa.
Your public key has been saved in /home/<username>/.ssh/id_rsa.pub.
The key fingerprint is: SHA256:PRxLu/LU6ZfFDve1sTIR0nK86NJVYRxRONCz0N5oy7U username@localhost
The key's randomart image is:
+---[RSA 4096]----+
| .+.+=|
| . *+ |
| o oo.*.|
| + * ==.o|
| S * =o++.|
| = =+E=|
| . = + .**|
| = + oooo|
| o ..o |
+----[SHA256]-----+
  1. (可选)检查您的 ~/.ssh 目录权限是否正确。输入以下命令:
chmod 0700 ~/.ssh
  1. 修正 ~/.ssh 目录内文件的权限。
chmod 0600 ~/.ssh/*

系统会提示:

Your public key has been saved in /home/userna5/.ssh/id_rsa.pub

id_rsa.pub 文件中的内容即为您的公钥,您需要将其添加到服务器。

详情请参见《在账户管理器中管理 SSH 密钥》文章,了解如何将公钥添加到账户管理器的 SSH 管理 面板。

在 Windows 中使用 PuTTY 生成 SSH 密钥

PuTTY 通常用于 Windows 7 及更早版本。如果您使用的是较新版本的 Windows(Windows 10 或更高版本),可以使用其他工具(如 PowerShell)获得更简便的体验。
PuTTY 是一个知名的第三方应用程序,用于配置 SSH 访问。如果您更喜欢使用此工具而非终端,请按照以下步骤操作。

  1. 启动 PuTTYgen 应用程序(PuTTY 密钥生成器)。
  2. 启动后,您可以保持默认的 RSA 选项作为 生成密钥类型。RSA 是默认且常用的选项。
  3. 生成密钥的位数 中,使用 4096。2048 位通常足够,但 4096 位更安全。
  4. 点击 Generate 按钮生成密钥对。在 PuTTYgen 窗口中移动鼠标,直到进度条满。
  5. (可选)您可以在 密钥注释 字段输入注释,方便识别此 SSH 密钥对。

(可选,推荐)您还可以在 密钥密码短语确认密码短语 字段输入安全密码短语。
6. 点击 Save private key 按钮,将私钥保存到本地计算机。
7. 点击 Save public key 按钮。您也可以从文本框复制公钥,或者直接点击按钮将其保存为单独文件。
8. 若要确认是否保存了两个密钥,请进入您的 .ssh 目录。
您应看到以下两个文件:

  • id_rsa.ppk(私钥)请注意,“.ppk” 是 PuTTY 的私钥格式。
  • id_rsa.pub(公钥)
  1. 要使用 SSH 密钥对登录远程服务器,您首先需要将 公钥 上传到服务器。

详情请参见《在账户管理器中管理 SSH 密钥》文章,了解如何将公钥添加到账户管理器的 SSH 管理 面板。


如何使用 SSH 连接到您的服务器

Windows

要使用 PuTTY 和公钥登录服务器,请参阅《Windows 上使用 SSH(PuTTY)》获取逐步指导。

Linux 或 macOS

要使用 SSH 密钥登录服务器,请执行以下操作:

  1. 打开终端。
  2. 输入以下命令。将 port 替换为端口号,ssh-key 替换为密钥文件路径,IP 替换为您的 IP 地址。
ssh -p port -i ssh-key user@IP
  1. 输入密钥的密码短语。
    使用密码短语保护 SSH 密钥非常重要,因为它能防止没有密码短语的人未经授权访问。没有密码短语,任何访问您计算机的人都可能复制您的私钥。

输入密码短语后,您将连接到服务器。


总结

SSH 密钥为 SSH 连接提供了一种比密码更安全、更便捷的替代方案。本文解释了 SSH 密钥的工作原理,详细介绍了使用 SSH 密钥进行安全认证、加密通信和自动访问的优势。学习如何在 Windows(使用 PowerShell 和 PuTTY)以及 Unix/macOS(通过终端)上生成 SSH 密钥。指南涵盖了生成 SSH 密钥、将公钥添加到服务器以及使用 SSH 密钥连接服务器,确保安全且无密码登录。