返回

文章详情

GitHub突然拒绝了我的SSH密钥(解决方案是一个.pub文件吗?)

Hacker News2026年7月21日 11:39

1分钟阅读 今天,我的主笔记本电脑上的git pull突然停止工作。权限被拒绝(publickey),毫无征兆。我没有更改任何内容,密钥仍然在GitHub上注册,而从另一台笔记本电脑(使用另一个密钥)拉取同一存储库则工作正常。兔子洞 我将省略完整的故障排除会话1。密钥在数学上是可靠的(openssl rsa -check表示RSA密钥正常),签名算法是现代的rsa-sha2-512,我的~/.ssh/config没有问题,GitHub的状态页面一切正常。但是: 权限被拒绝。 解决方案竟然如此简单。我的~/.ssh/github_rsa自从我重新安装笔记本电脑以来一直没有伴随的.pub文件。生成一个使身份验证再次工作:$ > ssh-keygen -y -f ~/.ssh/github_rsa > ~/.ssh/github_rsa.pub 我也不相信,所以我用.pub文件测试了六次,没有.pub文件也测试了六次。十二次中的十二次:没有.pub – 被拒绝,有.pub – 被接受。到底这有什么关系?因为.pub文件改变了OpenSSH使用的身份验证流程。存在.pub文件时,客户端首先探测(提供公钥,等待服务器的确认)然后再签名。只有私钥时,OpenSSH跳过探测,直接发送一个完全签名的身份验证请求。这两种流程根据RFC 4252都是完全合法的,标准的sshd接受两者。到目前为止,GitHub显然不接受。GitHub那边发生了什么变化吗?我认为发生了变化。我的调试日志中的服务器横幅显示6a2c000,而GitHub的SSH前端历史上一直将自己标识为babeld-<hash>。这闻起来像是新的服务器软件——一个拒绝直接签名公钥请求的软件。这完美解释了为什么早上工作的一切在一小时后都不再工作,而机器上没有任何变化。还有其他人遇到这个问题吗?你知道6a2c000是什么吗?让我知道——同时:确保你的私钥有它们的.pub姐妹文件。从ssh -vvv考古,到openssl密钥验证,再到控制的12次实验。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡