0Pricing
Linux Server Deployment & SSH Mastery · 课时

基于 SSH 密钥的身份验证

生成 SSH 密钥对,将公钥部署到服务器,并禁用密码身份验证以增强安全性

基于 SSH 密钥的身份验证 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

使用密钥对解锁 SSH

欢迎学习!本课将介绍基于 SSH 密钥的身份验证。与使用传统密码登录服务器相比,这种方式安全得多,也更加方便。

SSH 密钥就像数字握手,可以证明您的身份,而不必每次都输入密码。

公钥与私钥的奥秘

SSH 密钥身份验证依赖一对加密密钥:

  • 私钥:此密钥保存在您的本地计算机上,必须严格保密。您可以把它想象成打开数字锁的唯一钥匙。
  • 公钥:此密钥放置在您要访问的服务器上。它就像一把特殊的锁,只有您的私钥才能打开。

当您尝试连接时,服务器会向客户端发出挑战,客户端随后使用私钥证明其身份。

生成您的 SSH 密钥

您可以在本地计算机上使用 ssh-keygen 命令生成自己的 SSH 密钥对。默认情况下,它会生成 RSA 密钥对。

出现提示时,您可以选择使用密码短语保护私钥。这样可以增加一层安全保护,要求您在使用密钥前输入密码短语。

ssh-keygen

自定义密钥生成

为了获得更强的安全性,建议使用 ED25519 等较新的密钥类型。您还可以为密钥指定自定义文件名。

  • -t ed25519:指定 ED25519 算法。
  • -f ~/.ssh/my_server_key:创建名为 my_server_key 和 my_server_key.pub 的文件。

始终为您的私钥使用强密码短语!

ssh-keygen -t ed25519 -f ~/.ssh/my_server_key

了解密钥文件

生成密钥后,密钥通常会存储在本地计算机的 ~/.ssh/ 目录中。您会看到两个文件:

  • id_ed25519(或 id_rsa):这是您的私钥。请务必妥善保护,绝不要分享。
  • id_ed25519.pub(或 id_rsa.pub):这是您的公钥,您需要将此文件复制到服务器上。

出于安全考虑,这些文件的权限也非常重要!

轻松部署您的公钥

将公钥放到服务器上最简单的方法是使用 ssh-copy-id 命令。它会将您的公钥安全地复制到服务器的 ~/.ssh/authorized_keys 文件中。

第一次在新服务器上运行此命令时,您需要输入密码。之后通常就不再需要使用密码登录了。

ssh-copy-id user@your_server_ip

手动部署公钥

如果系统中没有 ssh-copy-id,或者您更喜欢手动操作,也可以自行将公钥复制到服务器上。

首先,确保服务器上存在 ~/.ssh 目录,并且其权限正确(700)。然后,将公钥追加到 ~/.ssh/authorized_keys 文件中(权限为 600)。

cat ~/.ssh/id_ed25519.pub | ssh user@your_server_ip \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

使用新密钥连接

公钥放到服务器上后,您就可以使用 SSH 进行连接了。如果您使用的是默认密钥名称(例如 id_rsa 或 id_ed25519),SSH 会自动找到它。

如果您使用的是自定义密钥名称(例如 my_server_key),则需要使用 -i 选项指定它。

ssh -i ~/.ssh/my_server_key user@your_server_ip

禁用密码登录以提高安全性

为了提高安全性,基于密钥的登录正常工作后,强烈建议您在服务器上禁用密码身份验证。

编辑服务器上的 SSH 守护进程配置文件(/etc/ssh/sshd_config),将 PasswordAuthentication yes 改为 no,然后重启 SSH 服务(例如执行 sudo systemctl restart sshd 或 sudo service ssh restart)。

# On the server, edit /etc/ssh/sshd_config
PasswordAuthentication no
# Then restart SSH service
sudo systemctl restart sshd

密钥身份验证检查

您已经了解了基于 SSH 密钥的身份验证原理、密钥的生成方式以及密钥的部署方法。现在来测试一下您的知识吧!

回顾:使用密钥保护 SSH

做得很好!您已经掌握了基于 SSH 密钥的身份验证。您学会了:

  • 公钥和私钥之间的区别。
  • 如何使用 ssh-keygen 生成密钥对。
  • 如何使用 ssh-copy-id 或手动方式将公钥部署到服务器。
  • 如何在无需密码的情况下安全连接。
  • 为什么以及如何在服务器上禁用密码身份验证。

SSH 密钥是安全、高效管理服务器的基础工具。请继续练习!

常见问题解答

「基于 SSH 密钥的身份验证」课时是免费的吗?

是的 — 「基于 SSH 密钥的身份验证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

「基于 SSH 密钥的身份验证」这节课中我会学到什么?

生成 SSH 密钥对,将公钥部署到服务器,并禁用密码身份验证以增强安全性 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「基于 SSH 密钥的身份验证」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 了解 SSH 协议
  2. 配置 SSH 客户端
  3. 基于 SSH 密钥的身份验证
  4. 加固 SSH 服务器
← 返回 Linux Server Deployment & SSH Mastery