在Windows上使用PuTTYgen生成SSH密钥

安全外壳(SSH)是用于客户端和服务器之间安全连接的加密网络协议,并支持各种身份验证机制。

两种最流行的机制是基于密码的身份验证和基于公钥的身份验证。 与传统的密码验证相比,使用SSH密钥更安全,更方便。

本教程说明了如何使用PuTTYgen在Windows上生成SSH密钥。 我们还将向您展示如何设置基于SSH密钥的身份验证以及如何在不输入密码的情况下连接到远程Linux服务器。

正在下载PuTTYgen#

PuTTYgen是一个开源实用程序,可让您为最流行的Windows SSH客户端PuTTY生成SSH密钥。

PuTTYgen可作为独立的可执行文件提供,它也是PuTTY .msi安装软件包的一部分。 如果您尚未安装PuTTYgen,请转到PuTTY下载页面并下载PuTTY安装软件包。 安装很简单,双击安装包,然后按照说明进行操作。

使用PuTTYgen创建SSH密钥

要使用PuTTYgen在Windows上生成SSH密钥对,请执行以下步骤:

  1. 通过双击“ .exe”文件或进入Windows“开始”菜单→PuTTY(64位)→PuTTYgen,启动PuTTYgen。

    在“要生成的密钥类型”框中,保留默认的RSA。 在“已生成密钥中的位数”字段中,保留默认值2048,对于大多数使用情况而言,该值就足够了。 (可选)您可以将其更改为4096。

  2. 单击“生成”按钮以开始生成新密钥对的过程。

    生成SSH密钥PuTTYgen

    系统将要求您将鼠标移到“键”部分的空白区域上,以产生一些随机性。 移动指针时,绿色进度条将前进。 该过程应花费几秒钟。

  3. 生成公钥后,它将显示在“密钥”块中。

    密码短语

    如果要设置密码,请在“密钥密码”字段中键入密码,然后在“确认密码”字段中确认相同的密码。 如果您不想使用密码,请将字段留空。

    当私钥文件用于交互使用时,建议使用密码短语。 否则,在生成用于自动化的密钥时,可以在不设置密码的情况下进行设置。

    密码短语通过防止私钥遭到未经授权的使用而增加了一层额外的安全保护。

    设置密码短语后,每次使用私钥时都需要输入密码。

  4. 通过单击“保存私钥”按钮来保存私钥。 您可以将文件另存为“ .ppk”文件(PuTTY私钥),但是建议将其保存在容易找到的位置。 私钥文件通常使用描述性名称。

    您也可以选择保存公钥,尽管以后可以通过加载私钥来重新生成它。

  5. 右键单击标有“用于粘贴到OpenSSHauthorized_keys文件的公共密钥”的文本字段,然后单击“全选”选择所有字符。 打开文本编辑器,粘贴字符并保存。 确保粘贴整个密钥。 建议将文件保存在与保存私钥相同的目录中,并使用与私钥相同的名称以及“ .txt”或“ .pub”作为文件扩展名。

    公钥PuTTYgen

    这是您应该添加到远程Linux服务器的密钥。

将公钥复制到服务器上

现在已经生成了SSH密钥对,下一步是将公用密钥复制到要管理的服务器上。

启动PuTTY程序并登录到您的远程Linux服务器。

如果您的用户SSH目录不存在,请使用 mkdir 命令并设置正确的权限:

mkdir -p ~/.sshchmod 0700 ~/.ssh

打开文本编辑器,然后将生成密钥对时在步骤4中复制的公共密钥粘贴到 ~/.ssh/authorized_keys 文件:

nano ~/.ssh/authorized_keys

整个公钥文本必须在一行上。

运行以下命令 chmod 命令,以确保只有您的用户可以读写 ~/.ssh/authorized_keys 文件:

chmod 0600 ~/.ssh/authorized_keys

使用SSH密钥登录服务器

Pageant是PuTTY SSH身份验证代理,可将私钥保存在内存中。 Pageant二进制文件是PuTTY .msi安装软件包的一部分,可以通过进入Windows的“开始”菜单→PuTTY(64位)→Pageant来启动。

启动Pageant时,它将在系统托盘中放置一个图标。 双击图标,将打开“选美”窗口。

要加载密钥,请按“添加密钥”按钮,这将打开一个新文件对话框。 找到私钥文件,然后按“打开”。 如果您尚未设置密码,则密钥将立即加载。 否则,将提示您输入密码。

选美加载键

输入密码,然后Pageant将加载私钥。

完成上述步骤后,您应该能够登录到远程服务器,而不会提示您输入密码。

要对其进行测试,请打开一个新的PuTTY SSH会话,然后尝试登录到远程服务器。 PuTTY将使用已加载的密钥,您将无需输入密码即可登录服务器。

禁用SSH密码验证#

要为服务器添加额外的安全性,您可以禁用SSH的密码身份验证。

在禁用SSH密码认证之前,请确保您可以不使用密码登录服务器,并且使用sudo特权登录的用户。

登录到远程服务器并打开SSH配置文件:

sudo nano /etc/ssh/sshd_config

搜索以下指令并进行如下修改:

/ etc / ssh / sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

完成后,保存文件并通过键入以下命令重新启动SSH服务:

sudo systemctl restart ssh

此时,将禁用基于密码的身份验证。

结论#

在本教程中,您学习了如何生成新的SSH密钥对并设置基于SSH密钥的身份验证。 您可以将同一密钥添加到多个远程服务器。 我们还向您展示了如何禁用SSH密码身份验证以及如何为服务器添加额外的安全性。

默认情况下,SSH侦听端口22。更改默认SSH端口将减少自动攻击的风险。

如果您有任何疑问或反馈,请随时发表评论。

SSH安全

Sidebar