TortoiseGit克隆GitHub仓库报exit code 128公钥权限错误如何解决
该报错核心为SSH公钥认证失败,和你删除旧仓库、新建同名仓库的操作无关联,先明确你提到的疑问:git本地配置的用户名和邮箱,不需要和GitHub账号信息完全一致,该配置仅用于标记本地提交的作者信息,不影响SSH认证权限。
另外你排查的index.lock、重装TortoiseGit、更换仓库名称的操作都不涉及核心问题,无需在这些方向上浪费时间。TortoiseGit重装后配置不变是因为卸载默认不会清除用户目录下的配置文件,属于正常现象。
第一步:修复SSH配置灰化问题
右键任意文件夹打开TortoiseGit→设置→网络,将SSH客户端的路径修改为你本地Git安装目录下的usr\bin\ssh.exe(默认路径参考:C:\Program Files\Git\usr\bin\ssh.exe),不要使用默认的TortoiseGitPlink.exe,修改完成后SSH密钥配置项就会解锁,不再是灰化状态。第二步:验证SSH公钥配置有效性
打开Git Bash,执行命令:
ssh -T git@github.com
如果返回Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.,说明公钥和GitHub的绑定是正常的,直接跳到第三步。
如果仍然返回Permission denied,说明SSH本地配置异常,在Git Bash中执行以下命令编辑SSH配置文件:
vim ~/.ssh/config
添加如下配置:
Host github.com HostName github.com User git IdentityFile 你的私钥文件绝对路径
替换私钥路径后保存,再重新执行ssh -T git@github.com验证,直到提示认证成功。
第三步:重新执行克隆操作
打开TortoiseGit克隆弹窗,确认仓库地址无误后,手动在「加载SSH密钥」选项中选择你绑定到GitHub的私钥文件,再点击克隆即可。临时验证方案
如果需要快速确认问题范围,可以改用仓库的HTTPS地址克隆,HTTPS模式不需要SSH公钥配置,克隆成功即可完全确认问题出在SSH认证环节,和仓库权限、本地环境其他配置无关。
内容的提问来源于stack exchange,提问作者C.Hillert

