返回博客

配置您的 Linux 服务器以使用基于 SSH 密钥的身份验证

配置您的 Linux 服务器以使用基于 SSH 密钥的身份验证

Linux 服务器上的 SSH

SSH,也称为安全外壳,是一种可用于与服务器连接和通信的协议。您可以 连接到您的 Linux 服务器,以使用此加密协议进行终端会话。如果您使用的是 OpenSSH 服务器,身份验证过程主要有两种不同的方式。第一种是标准的基于密码的身份验证。在这里,您只需使用用户名 and 密码凭据即可访问您的帐户。另一种方法是将您的 Linux 服务器设置为基于 SSH 密钥的身份验证。

在本指南中,我们将重点介绍如何配置 Linux 服务器以将 SSH 密钥作为主要身份验证手段。我们还将讨论为什么 SSH 密钥通常比通常的密码保护机制更受欢迎。

什么是 SSH 密钥?

SSH 密钥类似于您用于登录服务器上帐户的凭据。您无需输入用户名和密码,而是使用 SSH 密钥对,它也是一种访问凭据。虽然这些密钥是加密的,但您必须将它们视为身份验证凭据,因为这就是它们的用途。

一个典型的 SSH 密钥包含两部分:授权密钥和身份密钥。授权密钥是公钥,它与您的私有身份密钥结合使用以允许您访问帐户。公钥位于您要通过 SSH 登录的远程服务器上,并保留在与您的用户帐户关联的 ~/.ssh/authorized_keys 文件中。身份密钥用于验证您作为正确用户的身份,以确保只有授权人员才能访问给定帐户。这些密钥统称为用户密钥,因为它们用于验证用户的身份。一旦服务器能够验证这两个密钥,就会启动一个 shell 会话以执行您的命令。

您还拥有主机密钥和会话密钥。该协议使用主机密钥对本地计算机、系统或服务器进行身份验证。会话密钥有助于对连接上的数据流进行加密。这使您的会话和相应的活动更加安全。

SSH 密钥优于密码保护

相比密码保护,更倾向于使用基于 SSH 密钥的身份验证的主要原因是,后者可能会使您容易受到网络攻击。大多数人为了在需要登录时能够记住密码,不会使用极其复杂的密码。因此,这创造了一个脆弱的领域。许多攻击者会使用暴力破解相对简单的密码并侵入帐户。由于自动化和先进的黑客技术,这在如今变得尤为容易。

另一方面,SSH 密钥提供了一种更安全的方式来访问您的帐户。正如我们之前提到的,此方法使用公钥和私钥来验证客户端的身份。虽然您可以与任何人共享公钥,但您需要对私钥保密。配对时,公钥会解密私钥以验证您的身份。此外,您还可以通过在密钥对之上添加密码短语来增加保护。我们将在本指南的后面部分详细讨论密码短语。然而,即使没有密码短语,您的私有 SSH 密钥在您的本地计算机上也是极其安全的。网络永远无法直接访问该密钥,该密钥位于受限目录中,并辅以受限权限。

生成 SSH 密钥

要生成 SSH 密钥对,您需要浏览 OpenSSH 工具套件并找到 ssh-keygen。这是一个特殊的实用工具,允许您生成大约 2048 位大小的 SSH 密钥对。首先运行以下命令:

这将提示以下消息:

该消息将生成一个名为 id_rsa 的私钥和一个名为 id_rsa.pub 的公钥。此时,您可以选择要将密钥保存在何处。我们建议按回车键(Enter)以保留默认位置。保留默认位置可确保每当您使用该系统登录时,服务器都会自动定位并验证密钥。默认位置是主目录中的 ~/.ssh 目录。如果您希望选择其他位置,请输入该位置。

重写旧的 SSH 密钥

需要注意的是,您的系统上一次只能有一个 SSH 密钥对。这意味着,如果您之前在系统上生成并保存过密钥对,您将看到以下消息:

要继续创建并保存新的 SSH 密钥对,您必须删除现有的密钥对。请记住:如果您覆盖了已保存在磁盘上的密钥,您将无法再将其用于身份验证。这是一个不可逆的过程,因此请确保您绝对确定要覆盖旧的密钥对。

设置密码短语

在目录中设置好密钥后,系统会询问您是否要提供密码短语:

密码短语是可选的 - 您可以选择跳过它。但是,它通过在磁盘上加密您的私钥,为您的私钥增加了一层额外的安全性。如果您选择使用密码短语,则每次尝试使用此 SSH 密钥对登录时,都必须正确输入该密码短语:

最后,您现在应该已经拥有了可用于验证客户端的 SSH 密钥。

将您的 SSH 密钥嵌入到您的服务器账户中

在使用密钥进行身份验证之前,您需要将公钥嵌入到远程 Linux 服务器中。接下来,我们将向您展示在创建 CloudSigma 服务器时如何操作。首先,您需要找到您的 SSH 公钥,以便复制并粘贴它。如果您使用了上述方法生成 SSH 密钥对,可以通过输入以下命令来找到公钥:

这将导致 SSH 公钥像这样弹出:

复制此值以便稍后使用。在使用 CloudSigma 创建服务器时,您可以在选择服务器大小和操作系统镜像后选择添加 SSH 密钥:

single server creation

点击“添加”并粘贴您复制的内容,以将 SSH 密钥嵌入到您的服务器中。这样,每次启动服务器时,它都将已经包含注入的 SSH 密钥。

将公钥复制到现有服务器

虽然上述方法适用于创建新服务器的情况,但能否将 SSH 密钥嵌入到现有服务器中呢?答案是肯定的,并且有多种方法可以做到这一点,具体取决于您现有的工具。

使用 SSH-Copy-ID

这是复制公钥最简单、最容易的方法。您只需要在标准 OpenSSH 套件中找到的 ssh-copy-id 实用工具。但在使用此方法之前,请确保您的服务器上已启用基于密码的身份验证。要复制密钥,您将应用 ssh-copy-id 语法,然后输入您希望连接的远程主机。您还需要指定要连接的账户。您需要拥有该账户的密码访问权限,以便将密钥复制到正确的位置。命令应该像这样:

这可能会导致屏幕上弹出如下所示的信息:

这通常发生在您第一次连接到该特定远程主机时。它仅仅意味着计算机未能识别该主机。您只需输入“yes”并按回车键。完成此操作后,该工具将扫描账户以查找您的公钥。定位到公钥后,它会要求您输入账户密码:

接下来,您可以输入密码。连接到账户后,该工具将复制 ~/.ssh/id_rsa.pub 密钥的内容,并将其粘贴到远程账户 ~/.ssh 目录下的 authorized_keys 中。然后您将看到以下信息:

这意味着您已成功将公钥复制到现有的远程服务器上。

使用 SSH

这是一种将公钥复制到服务器上的较为传统的方法。如果您无法使用 ssh-copy-id 工具,最好使用此方法。同样,您需要拥有对账户的密码访问权限。您实质上是在计算机上将公钥内容作为输出,并通过它们之间建立的 SSH 连接将其传输到远程服务器。为此目的使用的命令应如下所示:

如您所见,我们已指定应将密钥放置在服务器上 ~/.ssh 目录中的 authorized_keys 文件中。使用 >> 符号还可以确保我们是在添加密钥,而不是覆盖它们。运行该命令后,您可能会看到以下消息:

与之前的提示类似,这意味着计算机无法识别远程主机。输入“yes”并按回车键继续。现在,您需要输入账户密码:

密码验证通过后,密钥将被复制到您用户账户中指定的文件中。

手动

如果您无法通过密码访问远程服务器上的账户,可以手动复制公钥。目标是将 id_rsa.pub 文件中的值复制到远程设备上的 ~/.ssh/authorized_keys 文件中。正如我们所知,我们可以通过使用以下命令来查看 id_rsa.pub 密钥的值:

您的 SSH 公钥内容将如下所示:

接下来,您需要通过任何可行的方式访问远程主机上的账户。登录后,检查并确保 ~/.ssh 目录存在。如果不存在,您可以运行以下命令来创建它:

现在,您可以使用此命令将 id_rsa.pub 文件的内容添加到远程服务器上 ~/.ssh 目录中的 authorized_keys 文件中:

在此命令中,您不需要输入“public_key_string”,而是需要输入之前通过运行 cat ~/.ssh/id_rsa.pub 命令提取的密钥内容。

使用您的 SSH 密钥进行身份验证

现在,您只需使用 SSH 密钥即可轻松登录您的账户。这意味着您不再需要密码即可访问服务器账户。您将使用通常用于登录的凭据:

这可能会导致弹出以下消息:

如果您看到此消息,请不要担心。这仅仅意味着本地系统无法识别远程主机。这通常发生在您第一次连接到该主机时。您只需输入“yes”并按回车键。回到前面的某些步骤,如果您设置了密码短语,这就是您需要输入它的地方。如果您没有设置,在 SSH 密钥通过验证后,您将直接登录到您的账户。这将在本地计算机上通过您当前的账户打开一个新的 shell 会话。

如何在服务器上禁用密码身份验证?

现在您已经知道如何设置 SSH 密钥,您需要禁用密码身份验证。即使您能够使用 SSH 密钥进行身份验证,如果您的密码身份验证过程处于活动状态,您仍然容易受到暴力破解攻击。在禁用密码身份验证机制之前,请确保基于 SSH 密钥的身份验证配置是服务器上的 root 账户,或者配置的账户具有 sudo 权限。确认这一点的目的是为了确保即使在禁用密码时,您仍保留对该账户的管理访问权限。现在您可以使用此 SSH 密钥登录您的服务器账户。下一步是打开 SSH 守护进程的配置文件:

在这里,您需要搜索以下指令:

您需要取消注释此行并将值更改为“no”,如下所示:

这样做将禁用基于密码的身份验证。完成后只需保存文件并关闭它。最后,您需要重启设备以应用更改。如果您使用的是 Ubuntu 或 Debian 设备,您还可以使用以下命令来禁用基于密码的登录:

为了确保您的守护进程(即 sshd)在 CentOS 或 Fedora 机器上的服务器上仅允许基于 SSH 的身份验证,请使用以下命令:

结论

完成所有这些步骤后,您应该已经在服务器上配置并运行了基于 SSH 密钥的身份验证。现在,您可以放心,您的服务器是安全且受到保护的!

祝您使用愉快!

author

Akshay Nagpal

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。