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 作为临时方案

你已经做了这个,这是很好的临时解决方案。

最后

  1. 先用 HTTPS 完成当前工作
  2. 空闲时按上述步骤诊断 SSH 问题
  3. 考虑使用 SSH over HTTPS 端口(最稳定,绕过防火墙):
    # 编辑 ~/.ssh/config
    cat >> ~/.ssh/config << EOF
    Host github.com
      Hostname ssh.github.com
      Port 443
      User git
    EOF
    

    手动将配置信息添加进去

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐