多SSH密钥访问Git服务异常求助:仅GitLab可正常访问
看起来你的GitLab连接正常,但GitHub和BitBucket遇到了公钥权限拒绝的问题,结合你的.ssh/config配置,我整理了几个关键排查步骤:
1. 确保测试命令使用正确的Host别名
你的config里给GitHub和BitBucket设置了自定义Host别名(Rukeith-GitHub、Rukeith-Bitbucket),所以测试时不能直接用ssh -T git@github.com,要指定别名:
# 测试GitHub ssh -T Rukeith-GitHub # 测试BitBucket ssh -T Rukeith-Bitbucket
如果直接用git@github.com,SSH会忽略你的自定义配置,尝试使用默认密钥(比如id_rsa),这会导致权限拒绝。
2. 修正config中的User字段(关键!)
GitHub和BitBucket的SSH连接必须使用git作为用户,而不是你的平台账号名(Rukeith)。你的config里这两个Host的User字段写错了,这是核心问题:
# 修正后的GitHub配置 Host Rukeith-GitHub HostName github.com User git # 这里改成git,不是Rukeith PreferredAuthentications publickey IdentityFile /Users/rukeith/.ssh/Rukeith-GitHub UseKeychain yes AddKeysToAgent yes # 修正后的BitBucket配置 Host Rukeith-Bitbucket HostName bitbucket.org User git # 这里改成git,不是Rukeith PreferredAuthentications publickey IdentityFile /Users/rukeith/.ssh/Rukeith-Bitbucket UseKeychain yes AddKeysToAgent yes
GitLab可能对User字段的兼容性更强,但GitHub和BitBucket严格要求用git用户建立SSH连接。
3. 检查密钥文件的权限
SSH对密钥文件的权限有严格要求,私钥必须是600(仅自己可读可写),公钥是644(所有人可读)。运行以下命令检查并修正:
# 查看权限 ls -l ~/.ssh/Rukeith-GitHub* ~/.ssh/Rukeith-Bitbucket* # 修正私钥权限 chmod 600 ~/.ssh/Rukeith-GitHub ~/.ssh/Rukeith-Bitbucket # 修正公钥权限 chmod 644 ~/.ssh/Rukeith-GitHub.pub ~/.ssh/Rukeith-Bitbucket.pub
如果权限不对,SSH会拒绝使用这些密钥。
4. 确认公钥已正确添加到平台
再仔细核对一次:
- 打开
~/.ssh/Rukeith-GitHub.pub,复制全部内容(包括结尾的邮箱) - 登录GitHub,进入「Settings → SSH and GPG keys」,确保添加的公钥和本地文件完全一致
- BitBucket同理,进入「Settings → SSH keys」核对
注意不要复制时遗漏字符或多添加空格。
5. 清除旧的known_hosts条目(可选)
如果之前用其他密钥连接过GitHub/BitBucket,可能存在旧的主机密钥冲突,运行以下命令清除:
ssh-keygen -R github.com ssh-keygen -R bitbucket.org
然后重新测试连接,SSH会重新添加新的主机密钥。
6. 启用调试模式查看详细日志
如果以上步骤都没解决,用调试模式运行测试命令,查看SSH连接的详细过程:
ssh -vT Rukeith-GitHub
重点看输出中「debug1: Trying private key:」的部分,确认是否加载了正确的Rukeith-GitHub密钥,以及后续的认证步骤哪里出错了。
按照这些步骤排查后,应该能解决GitHub和BitBucket的权限拒绝问题。
内容的提问来源于stack exchange,提问作者Rukeith

