在Windows上使用PuTTYgen生成SSH密钥
安全shell(SSH)是一种加密网络协议,用于客户端和服务器之间的安全连接,并支持各种身份验证机制。
两种最流行的机制是基于密码的身份验证和基于公钥的身份验证。
与传统的密码验证相比,使用SSH密钥更安全,更方便。
本教程介绍了如何使用PuTTYgen在Windows上生成SSH密钥。
我们还将向我们展示如何设置基于SSH密钥的身份验证以及如何在不输入密码的情况下连接到远程Linux服务器。
下载PuTTYgen
PuTTYgen是一个开源实用程序,可让我们为最流行的Windows SSH客户端PuTTY生成SSH密钥。
PuTTYgen可作为独立的可执行文件提供,它也是PuTTY .msi安装软件包的一部分。
如果我们尚未安装PuTTYgen,请转到PuTTY下载页面并下载PuTTY安装软件包。
安装很简单,双击安装包,然后按照说明进行操作。
使用PuTTYgen创建SSH密钥
要使用PuTTYgen在Windows上生成SSH密钥对,请执行以下步骤:
- 通过双击其.exe文件或者转到Windows的“开始”菜单→PuTTY(64位)→PuTTYgen,启动PuTTYgen工具。
对于“要生成的密钥类型”,请保留默认的RSA。对于大多数人来说,“生成的密钥中的位数” 2048就足够了。或者,我们可以将其更改为4096.
- 单击“生成”按钮以开始生成新密钥对的过程。
系统将要求我们将鼠标移到“键”部分的空白区域上,以产生一些随机性。移动指针时,绿色进度条将前进。该过程应花费几秒钟。
- 生成过程完成后,公钥将显示在窗口中。
(可选)如果要使用密码短语,请在“密钥密码短语”字段中键入密码,然后在“确认密码短语”字段中确认相同的密码短语。如果选择使用密码短语,则可以通过防止私钥未经授权的使用来获得另外的安全保护。如果我们设置密码短语,则每次使用私钥时都需要输入密码短语。
- 通过单击“保存私钥”按钮来保存私钥。我们可以使用.ppk扩展名(PuTTY私钥)将文件保存在任何目录中,但是建议将其保存在容易找到的位置。通常使用描述性名称作为私钥文件。也可以选择保存公钥,尽管以后可以通过加载私钥来重新生成它。
- 右键单击标有“用于粘贴到OpenSSHauthorized_keys文件的公共密钥”的文本字段,然后通过单击“全选”选择所有字符。打开文本编辑器,粘贴字符并保存。确保粘贴整个密钥。建议将文件保存在与保存私钥相同的目录中,并使用与私钥相同的名称以及.txt或者.pub作为文件扩展名。
这是将其添加到Linux服务器的关键。
将公钥复制到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窗口。
要加载密钥,请按“添加密钥”按钮,这将打开一个新文件对话框。
找到私钥文件,然后按“打开”。
如果我们尚未设置密码,则密钥将立即加载。
否则,将提示我们输入密码。
输入密码,Pageant将加载私钥。
完成上述步骤后,我们应该能够登录到远程服务器,而不会提示我们输入密码。
要测试它,请打开一个新的PuTTY SSH会话,然后尝试登录到服务器。
PuTTY将使用已加载的密钥,我们将无需输入密码即可登录Linux服务器。
禁用SSH密码认证
要为服务器添加另外的安全性,我们可以禁用SSH的密码身份验证。
在禁用SSH密码身份验证之前,请确保我们可以不使用密码登录服务器,并且使用sudo特权登录的用户。
登录到远程服务器,并使用文本编辑器打开SSH配置文件“/etc/ssh/sshd_config”:
sudo nano /etc/ssh/sshd_config
搜索以下指令并进行如下修改:
/etc/ssh/sshd_config
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
完成后,保存文件并通过键入以下命令重新启动SSH服务:
sudo systemctl restart ssh
此时,基于密码的身份验证已禁用。