一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

SSH 密钥底层原理如何学

时间:2026-08-10 12:25:49 编辑:袖梨 来源:一聚教程网

SSH密钥认证原理是“服务器用公钥加密随机数,客户端用私钥解密并返回结果”:公钥为公开锁、私钥为唯一钥匙,验证依赖三步——公钥正确写入authorized_keys、客户端可读私钥、sshd启用PubkeyAuthentication。

SSH 密钥底层原理不是靠死记硬背,而是理解“谁在验证谁”“数据怎么流动”“为什么不能被偷”。学得扎实的关键,在于把抽象加密过程对应到具体动作上。

从“锁和钥匙”开始建立直觉

别一上来就啃RSA数学。先记住这个比喻:

  1. 公钥 = 一把公开的“锁”:你可以把它钉在服务器门上(~/.ssh/authorized_keys),任何人都能看到,但它只能“锁东西”,不能开锁;
  2. 私钥 = 唯一匹配的“钥匙”:它只存在你本地电脑里,从不发给服务器,别人拿不到它,就打不开那把锁;
  3. 登录过程 = 一次“现场开锁测试”:服务器用你的公钥锁一个随机数,发给你;你用私钥解开并回传结果;服务器一验对,就放行。

重点盯住三步交互流程

真正决定是否成功的,是这三步有没有走通:

  1. 公钥必须正确写入服务器的 authorized_keys:路径要对(用户家目录下的 ~/.ssh/)、权限要严(~/.ssh 是 700,authorized_keys 是 600);
  2. 客户端必须能读到自己的私钥文件:比如 id_rsa~/.ssh/ 下,且权限是 600(否则 OpenSSH 会直接拒绝加载);
  3. 服务器 sshd 配置必须允许公钥认证:检查 /etc/ssh/sshd_configPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys 是否启用。

动手验证比看十遍文档更有效

打开终端,边敲边观察,每一步都问“它在做什么”:

  1. 运行 ssh-keygen -t ed25519 -C "me@work":生成的是数学关系绑定的一对文件,不是随便两个文本;
  2. ssh-copy-id user@host 或手动 cat id_ed25519.pub >> authorized_keys:你只是把公钥“贴”到服务器上,没动私钥;
  3. -v 参数连接:ssh -v user@host:日志里会清楚打出 “Offering public key”、“Server accepts key”、“Authentication succeeded”,这就是原理在跑。

避开常见认知误区

很多卡点其实来自误解:

  1. 私钥不是密码,也不该被上传:它永远留在你本地,哪怕你用 MobaXterm 或 VS Code Remote,工具也只是调用本地私钥;
  2. 公钥不是“账号凭证”,而是“准入许可”:它不包含身份信息,只是告诉服务器“允许持有对应私钥的人进来”;
  3. 免密 ≠ 没保护:生成时设的 passphrase(口令)是私钥文件的第二道锁,解密私钥才可用——这和登录服务器无关,只影响本地加载步骤。

热门栏目