Ubuntu下SSH认证克隆GitHub仓库遇公钥权限拒绝问题求助
解决SSH认证成功但克隆GitHub仓库提示Permission denied的问题
嘿,我之前也碰到过一模一样的情况!测试SSH连通性显示成功,但克隆仓库时却报权限错误,多半是这几个细节没处理好,咱们一步步排查:
1. 确认克隆URL是SSH格式
很多时候问题出在不小心用了HTTPS格式的仓库地址——哪怕SSH密钥配置正确,HTTPS地址也不会用到它。你要确保克隆命令里的URL是这种格式:
git clone git@github.com:shouldnotappearcalm/your-repo-name.git
而不是https://github.com/shouldnotappearcalm/your-repo-name.git。可以去GitHub仓库页面,点击「Code」按钮,切换到「SSH」选项再复制地址。
2. 确保SSH密钥已添加到ssh-agent
有时候系统不会自动加载你的私钥,这时候需要手动把密钥加入SSH代理:
- 先启动ssh-agent:
eval "$(ssh-agent -s)" - 然后添加私钥(如果密钥不是默认的
id_rsa,要换成你的密钥文件名):
如果你的密钥设置了密码,这里会提示输入,输入后再尝试克隆。ssh-add ~/.ssh/id_rsa
3. 检查.ssh目录和密钥文件的权限
GitHub对SSH相关文件的权限要求很严格,权限不对会导致认证失败:
- 设置.ssh目录权限为700(只有你能读写执行):
chmod 700 ~/.ssh - 设置私钥
id_rsa权限为600(只有你能读写):chmod 600 ~/.ssh/id_rsa - 设置公钥
id_rsa.pub权限为644(所有人可读,你可写):chmod 644 ~/.ssh/id_rsa.pub
4. 配置SSH config文件(多密钥场景)
如果你有多个SSH密钥(比如同时用多个GitHub账号,或其他服务的密钥),SSH可能会默认使用错误的密钥。这时候需要创建~/.ssh/config文件来指定针对GitHub的密钥:
- 先创建文件:
touch ~/.ssh/config - 编辑文件,写入以下内容(替换成你的密钥路径):
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa
保存后再尝试克隆。
5. 用 verbose 模式排查SSH连接细节
如果以上步骤都没解决,可以用 verbose 模式运行SSH测试,看具体哪里出问题:
ssh -vT git@github.com
查看输出里有没有debug1: Offering public key: ... id_rsa这样的行,确认正确的密钥被提供,以及后续的认证成功日志。
按这个顺序试下来,基本就能解决克隆时的权限问题了!
内容的提问来源于stack exchange,提问作者Calm
相关产品推荐
相关产品推荐

