openssh弃用rsa算法,登录验证失败怎么办?

ssh

今天升级了 macOS 系统到最新版本,按苹果的尿性我有得重装 xcode ……毫不意外,系统起来后 gomakegit 等等一堆命令都跪了。由于一直被坑,早已形成条件反射,直接执行 xcode 更新命令就是了:

1
xcode-select --install

xcode 安装完毕后,一切似乎恢复正常,直到我执行 git 命令拉代码:

1
2
3
$ git pull
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

提示表明,SSH 公钥认证没通过,可我没换过密钥呀!

怀疑跟升级有关,执行 ssh 命令,开启提示信息定位错误:

1
2
3
4
$ ssh -vT git@github.com
...
debug1: send_pubkey_test: no mutual signature algorithm
...

Google 搜了一下,发现是因为 openssh 废弃 ssh-rsa 算法导致的。因为 rsa 算法已经过时,存在比较大的安全隐患,推荐使用 ed25519

这样的话,我们需要重新生成一对密钥:

1
ssh-keygen -t ed25519 -C "fasionchan@gmail.com"

将生成的公钥注册到 github 之后,git 又可以通过 ssh 验证!

当然了,我们还可以编辑配置文件( ~/.ssh/config ),开启 rsa 算法:

1
PubkeyAcceptedKeyTypes +ssh-rsa

不过个人不建议这么做,毕竟存在安全风险。

订阅更新,获取更多学习资料,请关注我们的公众号:

【随笔】系列文章首发于公众号【小菜学编程】,敬请关注: