You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio连接GitHub时SSH登录反复被拒问题排查求助

故障背景

已在Android Studio中完成GitHub公私钥登录配置,更换互联网服务提供商后功能出现异常:每次使用Android Studio后SSH登录都会被拒绝,次日尝试向远程仓库推送代码变更时抛出如下错误:

git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain origin refs/heads/main:main
Invocation failed Unexpected end of file from server
java.lang.RuntimeException: Invocation failed Unexpected end of file from server
    at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil.java:30)
    at git4idea.http.GitAskPassApp.main(GitAskPassApp.java:58)
Caused by: java.net.SocketException: Unexpected end of file from server
    at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:866)
    at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
    at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:863)
    at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1615)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
    at org.apache.xmlrpc.DefaultXmlRpcTransport.sendXmlRpc(DefaultXmlRpcTransport.java:87)
    at org.apache.xmlrpc.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:72)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:194)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:185)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:178)
    at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil.java:27)
    ... 1 more
error: unable to read askpass response from '/home/marcell/.cache/Google/AndroidStudio2021.2/tmp/intellij-git-askpass-local.sh'
fatal: could not read Password for 'https://BallaMarcell@github.com': No such device or address

出现报错后必须重新生成SSH密钥并添加到GitHub才能恢复认证功能,严重影响开发效率,暂未定位到故障根因。

初步排查结论

经初步排查发现Android Studio使用了错误的认证URL,正确的认证URL应携带GitHub个人访问令牌(Personal Access Token, PAT),且URL末尾需附带对应仓库名称,正确格式示例如下:

https://ghp_thisiswherethepatshouldbe@github.com/username/reponame
排查修复方向
  • 先核对远程仓库地址:进入项目根目录执行git remote -v查看当前origin配置。如果地址是HTTPS格式,本身就不会走SSH密钥认证逻辑,和你之前配置的公私钥完全不匹配,执行git remote set-url origin git@github.com:你的GitHub用户名/对应仓库名.git切回SSH格式地址即可,不需要反复生成新密钥。
  • 脱离IDE测试SSH连通性:直接在系统终端执行ssh -T git@github.com验证连接状态。如果终端测试也返回连接失败,优先排查新运营商网络是否拦截22端口、本地~/.ssh/config配置是否存在失效的代理规则、本地存储的GitHub主机密钥是否因为网络切换校验不通过。如果确认22端口被运营商拦截,可在SSH配置中添加GitHub 443端口的SSH转发规则,无需重新生成密钥。
  • 清理IDE失效认证缓存:报错中提示无法读取askpass响应,是Android Studio内置的Git认证临时脚本在网络切换后,读取到已失效的旧认证缓存导致的。先进入Android Studio设置页的Version Control > Git选项,确认IDE调用的Git路径是本地系统安装的正式版本,而非IDE内置的旧版本Git;再进入System Settings > Passwords页面清空之前存储的所有GitHub认证缓存,重启IDE后重新完成账号授权即可。
  • 避免认证方式混用:之前每次重新生成密钥就能临时恢复,本质是生成新密钥的操作触发了IDE重新拉取认证配置,并没有解决远程地址错配、端口拦截、缓存失效的根因。反复生成密钥还会导致本地.ssh目录下留存大量无效密钥配置、known_hosts记录冗余,反而会提高认证异常的出现概率。

内容的提问来源于stack exchange,提问作者Marcell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:36:27