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

Ubuntu更新后Git命令行无法通过SSH推送到GitHub求助

解决Ubuntu更新后命令行无法通过SSH推送GitHub代码的问题

排查SSH配置的生效情况

  • 验证~/.ssh/config是否被正确读取:执行ssh -vT git@github.com,查看输出中是否有加载该配置文件的记录(如debug1: Reading configuration data /home/xxx/.ssh/config),以及是否应用了Hostname ssh.github.com和Port 443的设置。
  • 若配置未加载,检查文件权限:~/.ssh目录权限需为700,config文件权限需为600,执行以下命令修正:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/config
    

检查SSH代理状态

SmartGit可能自行管理密钥代理,而命令行可能未正确关联:

  • 查看当前代理状态:echo $SSH_AUTH_SOCK,若输出为空,启动代理并添加密钥:
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519
    
  • 再次测试ssh -T git@github.com,确认连接状态。

验证Git的SSH配置

Git可能存在独立的SSH命令配置,检查是否指定了错误路径:

  • 查看Git的SSH配置:git config --global core.sshCommand,若输出非空,确认是否为正确的SSH路径(如/usr/bin/ssh),若有误则重置:
    git config --global --unset core.sshCommand
    
  • 也可临时指定带调试的SSH命令测试推送:
    GIT_SSH_COMMAND="ssh -v" git push
    

通过输出细节定位问题。

补充SSH配置细节

Ubuntu更新可能导致SSH客户端默认配置变化,可在~/.ssh/config中添加更明确的规则:

Host github.com
  Hostname ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

IdentitiesOnly yes会强制使用指定密钥,避免SSH尝试其他无效密钥引发问题。

直接测试密钥连接

绕过配置文件,直接指定密钥和端口测试:

ssh -i ~/.ssh/id_ed25519 -p 443 git@ssh.github.com

若此命令成功,说明问题出在~/.ssh/config的加载或解析上;若仍超时,可再确认系统级网络规则:sudo iptables -L。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55