更新Git后Android Studio与Gitlab推拉代码SSH认证失败求助
我之前也碰到过几乎一模一样的情况——更新Git后,Android Studio里和Gitlab推拉代码时弹出Disconnected: No supported authentication methods available (server sent: publickey)错误,但克隆项目正常,Github也能正常操作。结合我当时的排查和解决经验,给你几个可行的步骤:
1. 先在命令行验证Gitlab的SSH连接
别先在Android Studio里瞎折腾,先在终端/命令提示符里跑这个命令,确认底层SSH连接是否正常:
ssh -T git@gitlab.com # 私有Gitlab请替换成你的域名,比如git.yourcompany.com
如果命令行返回Welcome to GitLab, @你的用户名!,说明SSH本身没问题,问题出在Android Studio和Git的配置同步上;如果命令行也失败,那先解决SSH基础问题。
2. 检查Git的SSH命令配置
更新Git后,可能默认使用的SSH客户端路径变了,导致Android Studio调用时找不到正确的密钥。你可以手动指定Git用的SSH路径:
# Windows示例,根据你的Git安装路径调整 git config --global core.sshCommand "C:/Program Files/Git/usr/bin/ssh.exe" # Mac/Linux示例 git config --global core.sshCommand "/usr/bin/ssh"
也可以先开启verbose模式看日志,排查到底用了哪个SSH客户端:
git config --global core.sshCommand "ssh -v"
然后在Android Studio里尝试拉取代码,查看终端输出的日志,找debug1: identity file相关的行,确认是否加载了正确的密钥文件。
3. 同步Android Studio的Git配置
Android Studio有时候会缓存旧的Git路径,更新Git后需要手动指定:
- 打开Android Studio的
File → Settings → Version Control → Git(Mac是Android Studio → Settings → Version Control → Git) - 确保
Path to Git executable指向你更新后的Git安装目录里的git.exe(比如C:\Program Files\Git\bin\git.exe) - 点击
Test按钮,确认弹出Git executed successfully的提示 - 最后试试
File → Invalidate Caches... → Invalidate and Restart,清空缓存后重启AS
4. 检查SSH密钥的权限(重点针对Windows)
Windows下SSH密钥文件的权限如果太开放,Git会拒绝使用。右键你的密钥文件(比如C:\Users\你的用户名\.ssh\id_rsa):
- 选择
属性 → 安全 → 高级 - 点击
禁用继承,然后删除所有非当前用户的权限 - 只保留你自己的用户,权限设置为
读取即可
5. 配置SSH Config区分多平台密钥(如果同时用Github和Gitlab)
虽然你说Github正常,但更新Git后可能密钥加载顺序变了。可以在~/.ssh/config(Windows是C:\Users\你的用户名\.ssh\config)里添加配置,明确指定每个平台用的密钥:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa # 你的Github密钥路径 Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_rsa_gitlab # 你的Gitlab密钥路径
如果两个平台用的是同一个密钥,这条可以跳过,但配置后能避免后续的冲突问题。
6. 重新生成兼容的SSH密钥
如果以上步骤都没用,可能是旧密钥的格式和新Git版本不兼容。试试生成Ed25519格式的密钥:
ssh-keygen -t ed25519 -C "你的邮箱地址"
然后把生成的id_ed25519.pub里的内容复制到Gitlab的Settings → SSH Keys里,替换旧的密钥,再重新测试连接。
内容的提问来源于stack exchange,提问作者Xianwei




