跳至内容

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