跳至内容

SSH 公钥和私钥

先决条件

  • 一定程度的命令行操作经验
  • 安装了 *openssh* 的 Linux 服务器或工作站
  • 可选:熟悉 Linux 文件和目录权限

简介

SSH 是一种用于从另一台机器访问一台机器的协议,通常通过命令行。使用 SSH,您可以在远程计算机和服务器上运行命令、发送文件,并通常从一个地方管理所有操作。

当您在不同位置处理许多 Rocky Linux 服务器,或者试图节省一些访问这些服务器的时间时,您将需要使用 SSH 公钥和私钥对。密钥对使登录远程机器和运行命令变得更容易。

本文档将指导您完成创建密钥并将服务器设置为使用这些密钥进行访问的过程。

生成密钥的过程

以下命令都在您的 Rocky Linux 工作站的命令行上运行

ssh-keygen -t rsa

这将显示以下内容

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

ENTER 接受默认位置。接下来系统将显示

输入密码(不输入密码则为空)

在此处按 ENTER。最后,它将要求您重新输入密码

再次输入相同的密码

最后一次按 ENTER

您现在将在 *。ssh* 目录中拥有一个 RSA 类型的公钥和私钥对

ls -a .ssh/
.  ..  id_rsa  id_rsa.pub

您需要将公钥(*id_rsa.pub*)发送到您将要访问的每台机器。在您这样做之前,您需要确保您可以 SSH 到您要发送密钥的服务器。此示例使用三个服务器。

您可以通过 DNS 名称或 IP 地址访问它们,但此示例使用 DNS 名称。示例服务器是 web、mail 和 portal。对于每台服务器,您将 SSH 进入(极客喜欢将 SSH 作为动词使用)并保持一个终端窗口打开

ssh -l root web.ourourdomain.com

如果您可以在所有三台机器上顺利登录,下一步是将您的公钥发送到每台服务器。使用 ssh-copy-id 命令执行此操作

ssh-copy-id -i ~/.ssh/id_rsa.pub user@web.ourdomain.com

对您的三台机器中的每台重复此步骤。这将使用您的公钥填充每台服务器上的 *authorized_keys* 文件。

尝试从您的 Rocky Linux 工作站再次 SSH 到服务器。您不应该收到密码提示。

SSH 目录和 authorized_keys 安全

在您的每个目标机器上,确保应用以下权限

chmod 700 .ssh/
chmod 600 .ssh/authorized_keys

作者:Steven Spencer

贡献者:Ezequiel Bruni、Ganna Zhyrnova