Git部署密钥权限问题及多SSH密钥配置困惑求助
同一机器完全可以配置多个SSH密钥,以下是针对你遇到问题的具体解决步骤:
1. 生成专属SSH密钥
打开终端,执行以下命令生成当前仓库的独立密钥(替换为你的Git账号邮箱):
ssh-keygen -t ed25519 -C "your-git-email@example.com"
当提示输入保存路径时,不要用默认的~/.ssh/id_ed25519,改成类似~/.ssh/id_ed25519_c_assignments的名字,避免和已有的密钥冲突。后续按提示设置密钥密码(可选)即可。
2. 配置SSH规则文件
在~/.ssh目录下创建或编辑config文件,添加以下内容,让Git针对不同仓库自动匹配对应密钥:
# 原有仓库(对应已存在的密钥) Host github.com-old-repo HostName github.com User git IdentityFile ~/.ssh/id_ed25519 # C-Assignments仓库(对应新生成的密钥) Host github.com-c-assignments HostName github.com User git IdentityFile ~/.ssh/id_ed25519_c_assignments
Host字段可以自定义,只要能区分不同仓库就行。
3. 更新当前仓库的远程地址
把当前仓库的远程地址中的github.com替换成上面配置的Host名称。比如原来的远程地址是git@github.com:adivenkat05/C-Assignments.git,改成:
git@github.com-c-assignments:adivenkat05/C-Assignments.git
执行以下命令完成更新:
git remote set-url origin git@github.com-c-assignments:adivenkat05/C-Assignments.git
4. 添加新密钥为仓库的Deploy Key
登录Git服务器(比如GitHub),进入adivenkat05/C-Assignments仓库的设置页面,找到Deploy Keys选项,点击「Add deploy key」,把本地~/.ssh/id_ed25519_c_assignments.pub文件里的内容粘贴进去,勾选「Allow write access」(需要推送权限的话必须勾),最后保存。
5. 验证连接并完成推送
先测试SSH连接是否正常:
ssh -T git@github.com-c-assignments
如果收到成功认证的提示,就可以执行推送命令关联分支并推送:
git push --set-upstream origin main
另外,最初的「当前分支无上游分支」错误,本质是本地分支未与远程分支绑定,上面的--set-upstream参数就是用来完成这个绑定的,解决密钥权限问题后就能正常执行。
内容的提问来源于stack exchange,提问作者Adi Venkat

