最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SSH 密钥底层原理如何学
时间:2026-08-10 12:25:49 编辑:袖梨 来源:一聚教程网
SSH密钥认证原理是“服务器用公钥加密随机数,客户端用私钥解密并返回结果”:公钥为公开锁、私钥为唯一钥匙,验证依赖三步——公钥正确写入authorized_keys、客户端可读私钥、sshd启用PubkeyAuthentication。
SSH 密钥底层原理不是靠死记硬背,而是理解“谁在验证谁”“数据怎么流动”“为什么不能被偷”。学得扎实的关键,在于把抽象加密过程对应到具体动作上。从“锁和钥匙”开始建立直觉
别一上来就啃RSA数学。先记住这个比喻:
-
公钥 = 一把公开的“锁”:你可以把它钉在服务器门上(
~/.ssh/authorized_keys),任何人都能看到,但它只能“锁东西”,不能开锁; - 私钥 = 唯一匹配的“钥匙”:它只存在你本地电脑里,从不发给服务器,别人拿不到它,就打不开那把锁;
- 登录过程 = 一次“现场开锁测试”:服务器用你的公钥锁一个随机数,发给你;你用私钥解开并回传结果;服务器一验对,就放行。
重点盯住三步交互流程
真正决定是否成功的,是这三步有没有走通:
-
公钥必须正确写入服务器的
authorized_keys:路径要对(用户家目录下的~/.ssh/)、权限要严(~/.ssh是 700,authorized_keys是 600); -
客户端必须能读到自己的私钥文件:比如
id_rsa在~/.ssh/下,且权限是 600(否则 OpenSSH 会直接拒绝加载); -
服务器
sshd配置必须允许公钥认证:检查/etc/ssh/sshd_config中PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys是否启用。
动手验证比看十遍文档更有效
打开终端,边敲边观察,每一步都问“它在做什么”:
- 运行
ssh-keygen -t ed25519 -C "me@work":生成的是数学关系绑定的一对文件,不是随便两个文本; - 用
ssh-copy-id user@host或手动cat id_ed25519.pub >> authorized_keys:你只是把公钥“贴”到服务器上,没动私钥; - 加
-v参数连接:ssh -v user@host:日志里会清楚打出 “Offering public key”、“Server accepts key”、“Authentication succeeded”,这就是原理在跑。
避开常见认知误区
很多卡点其实来自误解:
- 私钥不是密码,也不该被上传:它永远留在你本地,哪怕你用 MobaXterm 或 VS Code Remote,工具也只是调用本地私钥;
- 公钥不是“账号凭证”,而是“准入许可”:它不包含身份信息,只是告诉服务器“允许持有对应私钥的人进来”;
- 免密 ≠ 没保护:生成时设的 passphrase(口令)是私钥文件的第二道锁,解密私钥才可用——这和登录服务器无关,只影响本地加载步骤。