介绍
在本挑战中,你将配置 SSH 密钥认证。与传统的密码认证相比,这是一种安全性更高的方案。你将生成一对公私钥,在服务器上授权公钥,并配置 SSH 服务以允许使用密钥进行连接。完成配置后,你无需输入密码即可登录 SSH 服务器,从而提升安全性和操作便捷性。
生成公私钥对
第一步是创建加密密钥对。该密钥对由你必须严格保密的私钥,以及放置在服务器上用于授权访问的公钥组成。
任务
- 使用
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,请使用pkill向sshd进程发送HUP信号,这将促使它重新加载配置。
示例
完成这些步骤后,你应该能够使用 SSH 密钥登录到 localhost,而不会收到输入密码的提示。
$ ssh testuser@localhost "echo Login successful"
Login successful
总结
在本挑战中,你学习了如何通过配置密钥认证来增强 SSH 的安全性。你生成了公私钥对,通过将公钥添加到 authorized_keys 文件在服务器上进行了授权,并修改了 SSH 服务器配置以启用这种安全的认证方式。通过完成这项挑战,你掌握了安全管理远程系统的基本技能。



