GitHub 突然拒绝了我的 SSH 密钥——修复方法居然是一个 .pub 文件
来源:thorsell.io — 2026-07-21
📋 概述
作者的 git pull 突然报 Permission denied,密钥注册正常、配置干净、GitHub 状态页全绿。经过 12 次对照实验最终确认:缺少 .pub 文件是唯一原因。原理是 OpenSSH 在有 .pub 文件时先探测再签名,无 .pub 时直接发送签名认证请求。GitHub 的新 SSH 前端(banner 变为 6a2c000)拒绝后一种方式。
🔑 核心要点
- git pull 突然失败,12 次对照实验证明:有无 .pub 文件决定了认证成功与否
- 有 .pub 时 OpenSSH 先发送公钥探测再签名;无 .pub 时直接发送签名请求
- 两种方式都符合 RFC 4252,但 GitHub 的新 SSH 前端 6a2c000 只接受探测模式
- 修复只需一行:ssh-keygen -y -f ~/.ssh/github_rsa > ~/.ssh/github_rsa.pub
💡 金句
我测试了六次有 .pub 文件、六次没有。十二次全中:没有 .pub——拒绝,有 .pub——通过。我也不信,但数据不会撒谎。
👍 0👎 0
← 返回 Lobsters 首页