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
相关产品推荐
相关产品推荐

