共计 1059 个字符,预计需要花费 3 分钟才能阅读完成。
目录
[隐藏]
提醒:本文最后更新于2025-07-07 14:21,文中所关联的信息可能已发生改变,请知悉!
1 问题描述
在将 Macbook 系统升级至 13.5 版本后,git pull -r
拉取代码报错如下:
sign_and_send_pubkey: no mutual signature supported | |
Permission denied (publickey). | |
fatal: Could not read from remote repository. |
2 原因分析
openssh 8.2
版本后默认禁用 ssh-rsa
算法,因为该算法存在安全隐患,参考:OpenSSH to deprecate SHA-1 logins due to security risk
对于 ssh 登录,更为推荐的是改用 Ed25519
算法。于是有两种解决办法:手动启用 ssh-rsa
或改用生成 Ed25519
算法的 key。
3 解决办法
3.1 解决方案一:手动启用 ssh-rsa
算法
执行如下代码,创建 ~/.ssh/config
文件即可:
ls ~/.ssh | |
echo "PubkeyAcceptedKeyTypes +ssh-rsa" > ~/.ssh/config |
PubkeyAcceptedKeyTypes +ssh-rsa
是一个 OpenSSH 密钥验证策略,它表示服务器接受以 ssh-rsa
格式签名的公钥进行身份验证。这个策略只适用于 OpenSSH 服务器。
3.2 解决方案二:重新生成 Ed25519
算法的 key
以下以 macOS 为例,执行如下命令生成 ed25519
算法的公钥与私钥,然后将复制的公钥配置到 git 代码平台即可。
# 生成 ed25519 算法的公钥与私钥 | |
ssh-keygen -t ed25519 -C "your_email@example.com" | |
# 复制公钥到剪切板(macOS) | |
cat ~/.ssh/github_ed25519.pub | pbcopy |
3.3 附:为特定站点设置独立的 ssh 配置
ssh-keygen
可以指定 -f
参数自定义生成 key 的名称。示例:
ssh-keygen -t ed25519 -C "your_email@example.com" -f github_ed25519
然后编辑 ~/.ssh/config
文件,并在其中配置特定站点使用指定的 key 文件即可。示例:
vi ~/.ssh/config
参考添加如下配置(针对 github 站点):
Host github | |
Hostname github.com | |
# ProxyCommand connect -H localhost:1080 %h %p | |
User git | |
PreferredAuthentications publickey | |
IdentityFile ~/.ssh/github_ed25519 |
正文完