配置 SSH 密钥认证

Red Hat Enterprise LinuxBeginner
立即练习

介绍

在本挑战中,你将配置 SSH 密钥认证。与传统的密码认证相比,这是一种安全性更高的方案。你将生成一对公私钥,在服务器上授权公钥,并配置 SSH 服务以允许使用密钥进行连接。完成配置后,你无需输入密码即可登录 SSH 服务器,从而提升安全性和操作便捷性。

这是一个「挑战」项目,它与「引导实验」不同,你需要尝试独立完成挑战任务,而不是按照实验步骤一步步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个初学者级别的挑战,通过率为 90%。它在学习者中获得了 100% 的好评率。

生成公私钥对

第一步是创建加密密钥对。该密钥对由你必须严格保密的私钥,以及放置在服务器上用于授权访问的公钥组成。

任务

  • 使用 ssh-keygen 命令生成一个新的 RSA 公私钥对。

要求

  • 在生成密钥对之前,请先切换到 testuser 账户。
  • testuser 用户身份生成密钥对。
  • 在提示时使用默认的文件保存路径(/home/testuser/.ssh/id_rsa)。
  • 不要为私钥设置密码短语(在提示输入 passphrase 时直接按回车键)。

开始操作

首先,切换到 testuser 账户:

su - testuser
## Password: testuser123

示例

生成密钥对后,你可以列出 ~/.ssh 目录下的文件来查看新生成的密钥。

$ ls -l ~/.ssh
total 8
-rw------- 1 testuser testuser 3401 Aug 19 03:49 id_rsa
-rw-r--r-- 1 testuser testuser  759 Aug 19 03:49 id_rsa.pub

其中 id_rsa 文件是你的私钥,而 id_rsa.pub 是你的公钥。

✨ 查看解决方案并练习

授权公钥并配置 SSH 服务器

现在你已经拥有了密钥对,接下来必须配置服务器。这涉及两个主要操作:将你的公钥添加到授权密钥列表中,并确保 SSH 服务已配置为接受密钥认证。

前提条件

确保你当前仍以 testuser 账户登录。如果不是,请切换过去:

su - testuser
## Password: testuser123

任务

  • 将你的公钥复制到 ~/.ssh/authorized_keys 文件中。
  • ~/.ssh/authorized_keys 设置正确的文件权限。
  • 修改 SSH 服务器配置文件(/etc/ssh/sshd_config)以启用公钥认证。
  • 重新加载 SSH 服务以应用配置更改。

要求

  • 必须创建 ~/.ssh/authorized_keys 文件,且该文件需包含公钥(~/.ssh/id_rsa.pub)的内容。
  • ~/.ssh/authorized_keys 的权限必须设置为 600
  • /etc/ssh/sshd_config 中,必须取消 PubkeyAuthentication 的注释并将其设置为 yes
  • 必须使用 sudo pkill -HUP sshd 重新加载 SSH 服务配置。

提示

  • 你可以使用带有输出重定向(>>)的 cat 命令将密钥添加到 authorized_keys 文件中。
  • 使用 chmod 命令设置文件权限。
  • testuser 拥有 sudo 权限,可以编辑 /etc/ssh/sshd_config 并重新加载 sshd 服务。
  • 由于在此容器环境中无法使用 systemctl,请使用 pkillsshd 进程发送 HUP 信号,这将促使它重新加载配置。

示例

完成这些步骤后,你应该能够使用 SSH 密钥登录到 localhost,而不会收到输入密码的提示。

$ ssh testuser@localhost "echo Login successful"
Login successful
✨ 查看解决方案并练习

总结

在本挑战中,你学习了如何通过配置密钥认证来增强 SSH 的安全性。你生成了公私钥对,通过将公钥添加到 authorized_keys 文件在服务器上进行了授权,并修改了 SSH 服务器配置以启用这种安全的认证方式。通过完成这项挑战,你掌握了安全管理远程系统的基本技能。