问题描述:
使用git clone 、git pull 等去仓库代码时,会提示 Permission denied (publickey) 。
问题定位:
如果是因为升级了mac系统到Ventura,git clone 、git pull等命令基于ssh协议,macOS Ventura内置使用了OpenSSH_9.0p1,根据OpenSSH发行说明,从OpenSSH 8.8/8.8p1 版本开始,就默认关闭了ssh-rsa算法。macOS Ventura内置使用的OpenSSH_9.0p1也是默认关闭了ssh-rsa算法。导致验证失败,这种情况参考方案1、2
如果未升级导致 Permission denied (publickey),参考方案3.
解决方案
1、基于更安全的 ed25519 哈希算法生成新的密钥,配置到相关后台(github、gitlab)的ssh keys
2、终端重新启用对ssh-rsa算法的支持
方案1:生成ed25519算法的密钥
参考github: Generating a new SSH key and adding it to the ssh-agent - GitHub Docs
文档右上角可以转换为中文
# 过程中会提示输入密钥名,直接回车会生成默认名称
ssh-keygen -t ed25519 -C "your_email@example.com";
# 执行完成后cd ~/.ssh/ 可以看到生成的 私钥:id_ed25519 公钥:id_ed25519.pub
# 启动ssh-agent
ssh-agent -s
# 将SSH私钥添加到ssh-agent中
ssh-add ~/.ssh/id_ed25519
最后将公钥添加到相关后台(github、gitlab)的ssh keys,
参考:Adding a new SSH key to your GitHub account - GitHub Docs
最后检查是否添加成功,如果不成功查看上述步骤是否有疏漏:
ssh -T git@github.com
方案2:重新启用 RSA/SHA1
参考 OpenSSH 8.8/8.8p1 的 Release Notes
单个主机或者地址:
# 在 ~/.ssh/config 文件的对应主机配置里新增2行:
Host xxx-host
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
所有:
# 配置里有 Host * 配置的,需要写到 Host * 内
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
# 没有的,在 ~/.ssh/config 文件的顶部插入或者尾部新增2行:
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
方案3
# 查看配置信息是否包含目标用户名和邮箱
git config --global --list
# 如果不包含 则进行配置
git config --global user.name "your username"
git config --global user.email "your email"
# 查看是否已经添加了密钥 如果没有可以重复方案2的步骤
ssh-add -l
如果有什么问题可以留言随时沟通交流
个人网站:www.sanjie.site
个人微信公众号:叁戒
文章来源:https://www.toymoban.com/news/detail-766115.html
网站ai、游戏、摸鱼等板块,欢迎学习ai和玩游戏,有任何问题网站或公众号留言,欢迎交流沟通 文章来源地址https://www.toymoban.com/news/detail-766115.html
到了这里,关于【git问题】git同步 Permission denied (publickey).的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!