< 返回

什么是基于SSH密钥的身份验证?

2023-04-26 11:41 作者:joseph wu 阅读量:796

Secure Shell (SSH) 仍然是连接到远程 Linux 服务器和各种网络设备的实际方式。随着对 Ansible 等自动化技术的更大依赖,它的使用不仅没有失去重要性,反而有所增加。

SSH安全最佳实践

假设您的开发团队在他们的测试环境中建立了一个新的网络服务器,并且忽略了在服务器的防火墙中打开端口 80 和 443。团队与您联系,要求您解决问题。您可以使用 SSH 远程访问网络服务器。您建立连接,在出现提示时输入密码并完成防火墙配置。它快速、简单且安全。但是有更好的方法吗?

本教程涵盖实施和使用基于密钥的身份验证以支持更轻松的 SSH 身份验证和改进的自动化。SSH 身份验证方法可能是CompTIA Linux+和CompTIA Security+考试的主题。

在您的家庭实验室中将本教程与两个或多个基于 Linux 的虚拟机一起使用。熟悉基于密钥的身份验证的另一种好方法是在连接到Raspberry Pi计算机时使用它。这些设备是开始使用 Linux 的好方法。

标准 SSH 身份验证

SSH 的标准语法包括ssh命令、连接用户的名称以及目标设备的名称或 IP 地址。之后,远程系统提示输入帐户密码。

ssh密码

图 1:标准 SSH 连接的密码挑战

您现在已连接到系统,可以根据您当前的身份进行更改或使用sudo提升您的权限。

什么是基于 SSH 密钥的身份验证?

基于密钥的身份验证通过使用公钥/私钥对替换 SSH 身份验证质询中的“您知道的”密码部分。这种非对称加密唯一地标识了用户。也许更重要的是,至少在自动化的情况下,它不需要手动输入密码。SSH 自动传递身份验证密钥。假设远程系统接受密钥,则身份验证是立即且无声的。

实施步骤

实施基于密钥的身份验证很简单,包括三个步骤:

1.生成密钥对

2.复制公钥到远程服务器

3.测试认证

您还可以编辑/etc/ssh/sshd_config文件以要求在您的远程系统上进行基于密钥的身份验证。

以下是这三个实施步骤的更多详细信息。

生成密钥对

公钥/私钥对是一组在数学上相关的密钥,可以唯一地标识用户或计算机。Linux ssh-keygen命令生成密钥。根据您组织的安全要求,您可以使用-t选项来创建各种类型的密钥。选项包括 RSA、DSA 和 ECDSA。

使用以下命令在您将连接到远程设备的客户端计算机上创建密钥对:

# ssh-keygen

检查~/.ssh目录中的密钥。您将看到id_rsa(私钥)和id_rsa.pub(公钥)。密钥名称可能因所选的加密方法而异。

ssh-keygen-cmd

图 2:ssh-keygen 命令生成公钥/私钥对

滚动到文件底部并观察用户名。请记住,这是远程系统识别的用户。

密钥生成实用程序为您提供了设置密码的机会。按两次Enter跳过此提示。您可能不想设置密码,尤其是当您在自动化环境中使用 SSH 时。

复制公钥

密钥对现在驻留在您的客户端计算机上。这可能是您办公桌上用于远程连接到您负责的各种设备的计算机。下一步是将公钥复制到远程系统。

Linux 也有针对此任务的特定命令。命令是ssh-copy-id。例如,要将用户student的密钥复制到远程服务器192.168.1.101,请键入:

# ssh-copy-id学生@192.168.1.101

ssh-copy-id-cmd

图 3:ssh-copy-id 命令将用户的公钥复制到远程服务器

远程系统提示您输入密码。键入用于连接到目标服务器的用户帐户的密码。如果一切顺利,这是您最后一次必须输入此密码。

您可以检查远程系统的~/.ssh/authorized_keys文件并找到公钥。

公钥

图 4:公钥文件的内容

测试身份验证

测试新的身份验证方法就像建立 SSH 连接一样简单。键入通常的ssh命令并观察远程系统不会向您询问密码。你只是连接!

ssh-key-login-nopassword

图 5:基于密钥的 SSH 连接没有密码挑战

SSH 连接在后台传递公钥,证明您的身份。

明显的好处是易于连接。不再被要求输入密码很方便。然而,在自动化的背景下,基于密钥的身份验证使管理员不必输入或尝试保护文件中的密码。自动化工具可以在管理员不在场的情况下使用 SSH 连接并完成它们的任务。很难夸大此功能在当今自动化世界中的重要性。

强制执行基于密钥的身份验证

SSH 的基于密钥的身份验证肯定会改善您组织的安全状况。要实施此方法,请更新远程服务器上的/etc/ssh/sshd_config文件以要求基于密钥的身份验证并拒绝基于密码的连接尝试。

打开远程服务器上的/etc/ssh/sshd_config文件进行编辑。找到读取PubKeyAuthentication的节并将其编辑为yes。找到PasswordAuthentication的节并将其设置为no。

密码认证号

PubKeyAuthentication 是

当您这样做时,请考虑其他 SSH 安全最佳实践,例如将用户列入白名单和拒绝 root 帐户的远程连接。以下条目可能有助于更好地保护您的 SSH 连接。在生产环境中实施它们之前,请务必了解并测试它们。一个错误可能会停止与服务器的远程连接。

PermitEmptyPasswords 否

PermitRoot登录号

允许用户 admin1

保持练习

基于 SSH 密钥的身份验证对于当今的远程管理和自动化任务至关重要。花几分钟清点您经常通过 SSH 连接的 Linux 服务器和网络设备,然后创建一个密钥对。将公钥复制到这些系统。我还鼓励您将这些目标设备配置为需要 SSH 密钥进行身份验证并拒绝基于密码的尝试。

如果您正在准备 CompTIA Linux+、CompTIA Security+ 或CompTIA Cyber​​security Analyst (CySA+)等认证考试,请确保您可以识别与基于密钥的身份验证相关的组件和命令。在您的家庭实验室环境中完成这些步骤,直到它们成为第二天性。

联系我们
返回顶部