已在GitHub个人资料中配置SSH密钥,如何使用该密钥修改所有仓库并解决推送时的权限拒绝问题
解决GitHub SSH密钥权限拒绝问题并实现仓库修改操作
咱们一步步排查并解决这个Permission denied (public key)错误,同时确保你能通过SSH正常操作所有GitHub仓库:
1. 先确认SSH密钥的基础配置是否正确
- 首先检查本地密钥对:运行
ls -la ~/.ssh,确认存在你的私钥(比如你提到的directorytokey)和对应的公钥(后缀为.pub的文件)。如果公钥还没上传到GitHub,复制公钥的全部内容,到GitHub账号的「Settings → SSH and GPG keys」页面添加新的SSH密钥。 - 验证GitHub是否能识别你的密钥:执行
ssh -T git@github.com。如果成功,会看到类似Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.的提示;如果还是报错,说明问题出在密钥加载或配置上。
2. 修复SSH Agent与密钥加载问题
你已经尝试了启动agent和添加密钥,但可能没生效,试试这些细节:
- 确认SSH Agent是否在运行:执行
echo $SSH_AGENT_PID,如果输出一串数字,说明agent在运行;如果没有输出,重新启动:eval "$(ssh-agent -s)"。 - 确保密钥路径正确:添加密钥时,绝对路径要准确,比如你的密钥在
~/.ssh/directorytokey,执行ssh-add ~/.ssh/directorytokey。如果报错Could not open a connection to your authentication agent.,可以先运行ssh-agent bash,再执行ssh-add命令(部分终端环境需要这样关联agent)。 - 修正密钥权限:SSH对文件权限要求严格,私钥必须是600权限,公钥是644。执行以下命令:
chmod 600 ~/.ssh/directorytokey chmod 644 ~/.ssh/directorytokey.pub
3. 配置SSH Config文件强制指定密钥
创建或修改~/.ssh/config文件,让SSH连接GitHub时优先使用你的指定密钥,避免混淆其他密钥:
Host github.com HostName github.com User git IdentityFile ~/.ssh/directorytokey # 替换成你的私钥路径 IdentitiesOnly yes
保存文件后,再次执行ssh -T git@github.com验证是否成功。
4. 确认仓库远程地址是SSH格式
进入本地仓库目录,执行git remote -v,检查输出的远程地址是否为git@github.com:你的用户名/仓库名.git格式。如果是https://开头的HTTPS地址,需要改成SSH格式:
git remote set-url origin git@github.com:你的用户名/仓库名.git
5. 最后:通过SSH操作GitHub仓库的基本流程
搞定以上配置后,你就可以正常通过SSH操作仓库了:
- 克隆仓库:
git clone git@github.com:你的用户名/仓库名.git - 提交修改后推送:
git push origin 你的分支名(比如main或master) - 拉取远程更新:
git pull origin 你的分支名
如果以上步骤都试过还是不行,可以尝试清除SSH密钥缓存:ssh-add -D,然后重新添加你的密钥。另外,部分系统(比如Mac)的密钥链可能会缓存旧密钥,你可以打开Keychain Access删除旧的GitHub相关密钥后再重试。
内容的提问来源于stack exchange,提问作者Kripta Studios
相关产品推荐
相关产品推荐

