生成 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 中使用。
- 按 Windows + X 或打开 开始 菜单,启动 PowerShell。
- 在 PowerShell 中输入以下命令以生成 SSH 密钥对。
ssh-keygen
- 当看到以下提示时,按 Enter。
Enter a file in which to save the key (C:\Users\<username>\.ssh\id_rsa):
- 系统会再次提示您设置密码短语以增强安全性。
- 如果您想要额外的安全保护,请输入密码短语,然后按 Enter。
- 如果您想跳过此步骤,直接按两次 Enter。
- 完成后,您将看到类似以下的提示:
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...
- 要检查密钥是否成功创建,请通过运行以下命令进入 .ssh 目录。
cd ~\.ssh
您应该会看到以下两个文件:
- id_rsa(私钥)
- id_rsa.pub(公钥)
- 若要继续下一步,您需要将私钥转换为 .ppk 格式。为此,请下载并打开 PuTTYgen 应用程序。请注意,以下步骤特指使用 PuTTY。
- 点击 Load 按钮,找到您生成的私钥。

- 输入您的 SSH 密钥密码短语(如果之前设置了)。

- 点击 Save private key 按钮,生成 .ppk 文件。

- SSH 密钥对生成后,将 公钥 添加到您要连接的服务器。这样服务器就能使用公钥对您进行身份验证。
详情请参见《在账户管理器中管理 SSH 密钥》文章,了解如何将公钥添加到账户管理器的 SSH 管理 面板。
在 Unix 或 macOS 终端生成 SSH 密钥
本节适用于 Unix 类操作系统上的 OpenSSH 用户,包括 Linux、macOS 和 BSD。
- 启动您的终端应用程序。
- 在终端中输入以下命令。
ssh-keygen -t rsa -b 4096
- 当看到提示“Enter file in which to save the key”时,按 Enter。
- 输入一个安全的密码短语,然后按 Enter。
- 再次输入密码短语以确认,然后按 Enter。
- 您将收到成功生成密钥的消息,包含密钥的详细信息。
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]-----+
- (可选)检查您的 ~/.ssh 目录权限是否正确。输入以下命令:
chmod 0700 ~/.ssh
- 修正 ~/.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 访问。如果您更喜欢使用此工具而非终端,请按照以下步骤操作。
- 启动 PuTTYgen 应用程序(PuTTY 密钥生成器)。
- 启动后,您可以保持默认的 RSA 选项作为 生成密钥类型。RSA 是默认且常用的选项。
- 在 生成密钥的位数 中,使用 4096。2048 位通常足够,但 4096 位更安全。
- 点击 Generate 按钮生成密钥对。在 PuTTYgen 窗口中移动鼠标,直到进度条满。
- (可选)您可以在 密钥注释 字段输入注释,方便识别此 SSH 密钥对。
(可选,推荐)您还可以在 密钥密码短语 和 确认密码短语 字段输入安全密码短语。
6. 点击 Save private key 按钮,将私钥保存到本地计算机。
7. 点击 Save public key 按钮。您也可以从文本框复制公钥,或者直接点击按钮将其保存为单独文件。
8. 若要确认是否保存了两个密钥,请进入您的 .ssh 目录。
您应看到以下两个文件:
- id_rsa.ppk(私钥)请注意,“.ppk” 是 PuTTY 的私钥格式。
- id_rsa.pub(公钥)
- 要使用 SSH 密钥对登录远程服务器,您首先需要将 公钥 上传到服务器。
详情请参见《在账户管理器中管理 SSH 密钥》文章,了解如何将公钥添加到账户管理器的 SSH 管理 面板。
如何使用 SSH 连接到您的服务器
Windows
要使用 PuTTY 和公钥登录服务器,请参阅《Windows 上使用 SSH(PuTTY)》获取逐步指导。
Linux 或 macOS
要使用 SSH 密钥登录服务器,请执行以下操作:
- 打开终端。
- 输入以下命令。将 port 替换为端口号,ssh-key 替换为密钥文件路径,IP 替换为您的 IP 地址。
ssh -p port -i ssh-key user@IP
- 输入密钥的密码短语。
使用密码短语保护 SSH 密钥非常重要,因为它能防止没有密码短语的人未经授权访问。没有密码短语,任何访问您计算机的人都可能复制您的私钥。
输入密码短语后,您将连接到服务器。
总结
SSH 密钥为 SSH 连接提供了一种比密码更安全、更便捷的替代方案。本文解释了 SSH 密钥的工作原理,详细介绍了使用 SSH 密钥进行安全认证、加密通信和自动访问的优势。学习如何在 Windows(使用 PowerShell 和 PuTTY)以及 Unix/macOS(通过终端)上生成 SSH 密钥。指南涵盖了生成 SSH 密钥、将公钥添加到服务器以及使用 SSH 密钥连接服务器,确保安全且无密码登录。