You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

更新Git后Android Studio与Gitlab推拉代码SSH认证失败求助

解决Android Studio更新Git后与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

火山引擎 最新活动