解决推送github代码ssh不可用的问题,但是https可以用
·
1. SSH 密钥过期或被移除
-
检查密钥状态:
# 查看密钥是否存在 ls -la ~/.ssh/ # 测试 SSH 连接到 GitHub ssh -T git@github.com -v- 如果提示 “Permission denied (publickey)”,说明密钥有问题
- 如果 GitHub 上有多个密钥,可能使用了错误的密钥
2. GitHub SSH 密钥被移除或更改
- 登录 GitHub → Settings → SSH and GPG keys
- 检查你的 SSH 密钥是否还在
- 可能不小心删除或更改了密钥
3. SSH 配置问题
检查 SSH 配置文件:
cat ~/.ssh/config
4. 网络/防火墙变化
- 公司/学校网络可能阻止 SSH 端口(22)
- 切换到使用 HTTPS 端口(443)的 SSH:
# 在 ~/.ssh/config 中添加 Host github.com Hostname ssh.github.com Port 443 User git
5. 本地 SSH 代理问题
# 重启 SSH 代理
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa # 或你的密钥文件名
6. 系统更新后的变化
- 操作系统更新可能重置了 SSH 配置
- Git 更新可能导致默认配置改变
诊断步骤
步骤 1:测试 SSH 连接
ssh -T git@github.com
注意具体的错误信息。
步骤 2:检查密钥是否添加到 GitHub
# 获取公钥指纹
ssh-keygen -l -f ~/.ssh/id_rsa.pub
然后在 GitHub SSH 密钥列表中比对指纹。
步骤 3:查看详细的 SSH 连接日志
ssh -Tv git@github.com
这会显示详细的连接过程,帮助你找到具体问题。
常见快速修复
修复 1:重新添加密钥
# 如果密钥存在,重新添加
ssh-add -D # 删除所有缓存的密钥
ssh-add ~/.ssh/id_rsa # 重新添加你的密钥
修复 2:更新 known_hosts
# 删除 GitHub 的 known_hosts 条目
ssh-keygen -R github.com
修复 3:使用 HTTPS 作为临时方案
你已经做了这个,这是很好的临时解决方案。
最后
- 先用 HTTPS 完成当前工作
- 空闲时按上述步骤诊断 SSH 问题
- 考虑使用 SSH over HTTPS 端口(最稳定,绕过防火墙):
# 编辑 ~/.ssh/config cat >> ~/.ssh/config << EOF Host github.com Hostname ssh.github.com Port 443 User git EOF手动将配置信息添加进去
更多推荐
所有评论(0)