git push 失败引发的 ssh 问题

Created at 2021-10-11 00:58:08 UTC

1、问题初现

写上一篇文章,正打算往图床传图时,发现失败了,之前一直都没碰到过

图床用某 git 平台做的,传图也就是 git push,发现报错了

Blog Image

一开始没仔细想,下意识地以为是 sshkey 的问题,ssh-keygen 重新生成、配置,但还是不行

只能查查别人有没有碰这问题,发现一篇🔗官方的排错文档,问题的表现虽然是一样的,都是 Permission denied,但没有我要的答案,因为实际上我们碰到的问题根源不一样(当时并没意识这一点,事后想起来的)

到这里,包括图床、github 在内所有 ssh 连接都不行了

2、排错

在 🔗stackoverflow 找到第一个答案:HostKeyAlgorithms

在 🔗gitlab 论坛 找到第二个答案:PubkeyAcceptedKeyTypes

把这两个参数配置到 ~/.ssh/config

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

尝试连接 github

ssh -T git@github.com

输出结果是成功了

Hi Admin! You've successfully authenticated, but GitHub does not provide shell access.

到这里就能正常地操作 git push 和 git pull 了

3、找原因

找到了一些解释,在 🔗openssh 官网的 releasenote

先是在 2021-08-20 预告过 1 次

Blog Image

在最新的版本 2021-09-26 中,正式禁用了使用 SHA-1 的 rsa 签名

Blog Image

它说对用户基本无感知,只会对还在用旧的 ssh 实现的用户产生不兼容影响,这些用户可以通过上面的配置解决问题,我这次也是靠了上面的配置解决

由于对 openssh 还只停留在粗浅使用 ssh 命令的阶段,所以只知道这样做是为了安全考虑,不了解深层含义,有时间得好好读一下这些官方文档