SSH密钥对:一把锁与一把钥匙的信任游戏
前言
本系列旨在系统性地重构我们的知识图谱,将每一个孤立的技术点,都精准地放入其所属的上下文和知识网络中。我们追求的不是零散的“笔记”,而是一座坚实的、互相连接的“知识圣-殿”。
旅程继续。今天,我们将聚焦于现代Web安全的基石之一。
🔐 条目二:SSH密钥对:一把锁与一把钥匙的信任游戏
1. 上下文:为什么密码不够好?
在使用Git或登录服务器时,我们常用密码进行认证。但密码存在风险:
- 可能被暴力破解。
- 在网络传输中可能被截获(尽管SSH协议本身是加密的)。
- 需要在多个地方重复输入,管理不便。
SSH密钥对提供了一种更安全、更便捷的替代方案,其背后是强大的非对称加密 (Asymmetric Encryption) 技术。
2. 核心比喻:你的专属“锁”与“钥匙”
理解SSH密钥对,只需想象两样东西:
- 公钥 (Public Key) - “锁”:
- 这把“锁”是公开的,你可以把它复制很多份,然后交给任何你信任的服务,比如GitHub、你的云服务器等。
- 它的唯一功能是“上锁”(加密数据),任何人拿到这把锁,都无法用它来开锁(解密)。
- 私钥 (Private Key) - “钥匙”:
- 这把“钥匙”是独一无二、绝对私密的,你必须妥善保管在自己的电脑上(例如在
.ssh
文件夹中),绝不能泄露给任何人。 - 它的唯一功能是“开锁”(解密数据),且只能解开由其配对的公钥所加密的数据。
- 这把“钥匙”是独一无二、绝对私密的,你必须妥善保管在自己的电脑上(例如在
- 即:公钥加密,私钥解密
3. 工作流程:以GitHub认证为例
- 部署“锁”: 你将你的公钥(锁)上传到GitHub的设置页面。
- 发起连接: 当你尝试通过SSH连接到GitHub时(例如执行
git push
),你的电脑会告知GitHub:“我是持有这把锁对应钥匙的人”。 - 身份挑战: GitHub会用你之前给它的公钥(锁),对一段随机信息进行“上锁”(加密),然后把这个加密后的信息发回给你的电脑。
- 出示“钥匙”: 你的电脑使用本地保管的私钥(钥匙),对这段加密信息进行“开锁”(解密)。
- 验证成功: 你将解密后的原始信息发回给GitHub。GitHub确认信息无误,从而证明了你确实是私钥的合法持有者,认证通过。
关键优势:整个认证过程,你的私钥(钥匙)和密码都从未在网络上传输过,极大地提升了安全性。