基于 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 反馈 — 无需本地设置。
此课程中的所有课时
- 了解 SSH 协议
- 配置 SSH 客户端
- 基于 SSH 密钥的身份验证
- 加固 SSH 服务器