跳转至

Rocky Linux - SSH 公钥和私钥

准备工作

  • 熟悉命令行操作。
  • 安装有 openssh 的 Rocky Linux 服务器或工作站。
    • 从技术上讲,本文所述的过程在任何已安装 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 passphrase (empty for no passphrase):

因此,只需按 Enter 键。最后,系统将要求您重新输入密码:

Enter same passphrase again:

最后再按一次 Enter 键。

现在,您的 .ssh 目录中应该有一个 RSA 类型的公钥和私钥对:

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

现在,需要将公钥(id_rsa.pub)发送到将要访问的每台计算机上。在执行此操作前,需要确保可以通过 SSH 连接到服务器。本示例将仅使用三台服务器。

您可以使用 DNS 名称或 IP 地址通过 SSH 访问它们,本示例将使用 DNS 名称。示例服务器是 Web、邮件和门户。对于每台服务器,尝试以 SSH 登入,并为每台计算机打开终端窗口:

ssh -l root web.ourourdomain.com

假设顺利登录到三台计算机上,那么下一步就是将公钥发送到每个服务器:

scp .ssh/id_rsa.pub root@web.ourourdomain.com:/root/

对每台计算机重复此步骤。

在每个打开的终端窗口中,输入以下命令,您应该看到 id_rsa.pub

ls -a | grep id_rsa.pub

如果正确,现在准备在每台服务器的 .ssh 目录中创建或添加 authorized_keys 文件。在每台服务器上,输入以下命令:

ls -a .ssh

重要!请务必仔细阅读以下内容。如果您不确定是否会破坏某些内容,那么在继续之前,请在每台计算机上创建 authorized_keys(如果存在)的备份副本。

如果没有列出 authorized_keys 文件,那么通过在 /root 目录中输入以下命令来创建它:

cat id_rsa.pub > .ssh/authorized_keys

如果 authorized_keys 已存在,那么只需要将新的公钥附加到已存在的公钥上:

cat id_rsa.pub >> .ssh/authorized_keys

将密钥添加到 authorized_keys 或创建的 authorized_keys 文件后,请再次尝试从 Rocky Linux 工作站通过 SSH 连接到服务器。此时将没有提示您输入密码。

确认无需密码即可进行 SSH 登录后,请从每台计算机的 /root 目录中删除 id_rsa.pub 文件。

rm id_rsa.pub

目录和 authorized_keys 安全

在每台目标计算机上,确保应用了以下权限:

chmod 700 .ssh/ chmod 600 .ssh/authorized_keys