2021-12-13 how to handle multi ssh key

问题描述

$ git push
remote: Permission to xxx/testrepo.git denied to yyy

$ git config user.name
xxx
$ git config --global user.name
xxx

明明用户就是 xxx,但是这里提交确实尝试用 yyy 用户进行提交,然后就被拒绝了。
此外,去 github 上检查ssh key,也是已经加好了的(重新加一遍也不行)

$ cat ~/.ssh/id_rsa.pub

那么这里就引出来几个问题:

  1. 如何使用不同账号往不同的代码平台,如 github / gitlab / bitbucket / gitee 上推送代码?
  2. 如何使用不同账号往同一个代码平台,如 github 的多个 repo 上推送代码?

根本原因

原因是 ~/.ssh/ 目录下生成了多个ssh key:

$ ls ~/.ssh/
id_ed id_ed.pub known_hosts
config id_rsa id_rsa.pub

git push 在提交时,错误得使用了其中一个公钥 id_ed.pub,也就是对应了用户 yyy

Solution

方法一

删除其中一个 ssh key

方法二

修改config文件:

Host github1
  HostName github.com
  User git
  IdentityFile ~/.ssh/user1_rsa
  IdentitiesOnly yes
 
Host danielsunzhongyuan.github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/user2_rsa
  IdentitiesOnly yes 

说明

  1. 这里的用户指的就是 git,也就是你的 repo 的 remote url 里 @ 符号前面的内容(能不能修改还没试过)
  2. Host 指的是 remote url 里 @ 符号后面的内容
$ git remote -v

origin git@danielsunzhongyuan.github.com:danielsunzhongyuan/puruan-training.git (fetch)
origin git@danielsunzhongyuan.github.com:danielsunzhongyuan/puruan-training.git (push)

  1. 这样也就要求咱们使用默认 git clone 之后,需要修改 remote url,把它设置成 username.github.com 的形式,从而让它去使用 user2_rsa

Reference

  1. https://www.cnblogs.com/v5captain/p/6590991.html
  2. https://hanpanpan200.github.io/2019/10/14/setup-multiple-git-accounts-by-ssh-config/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值