【Git使用笔记(二)】— 通过新增公钥管理多个GitHub账号代码

Git使用笔记(二)— 通过新增公钥管理多个GitHub账号代码

 碰到的具体问题:

ERROR: Permission to UserB/Navigation.git denied to UserA.
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。

 GitHub机制:不能有多个账号添加了同一个公钥。比如在GitHub存在UserA和UserB,假设UserA和UserB都绑定了同一个公钥,一旦使用该公钥的设备发起登录或者操作,那GitHub就不能区分到底是UserA还是UserB在安全登录网站,那安全登录机制就起不到任何效果。

 解决方案:生成多个公钥,来对应绑定多个GitHub账号。

引用说明

 参考地址:Git 最著名报错 “ERROR Permission to XXX git denied to user”终极解决方案
 本篇文章基于上面的参考地址修改而来,本篇文章仅仅提炼出最简要的信息供个人记录使用。如果如果想要了解详情,可以直接参考上面的地址。



一、创建一个公钥

1.配置好用户信息

developer@aiot1808-devel:~$ git config --global user.email "yourGitHubMail@xxx.com"
developer@aiot1808-devel:~$ git config --global user.name  "yourGitHubName"

2.找到.ssh目录

.ssh目录通常在家目录中找到:

developer@aiot1808-devel:~/work$ cd ~
developer@aiot1808-devel:~$ ls -a
.                     .android       .bashrc  .dbus             Examples    .ICEauthority  modules   .profile         rknn_api.h    .rpmdb                     upgrade_tool  .viminfo  模板  文档  桌面
..                    .bash_history  .cache   .designer         .gitconfig  .local         .mozilla  .python_history  rockx.h       .ssh                       utils         work      视频  下载
AIOT1808-SDK.tar.bz2  .bash_logout   .config  EASY-EAI-Toolkit  .gnupg      log            .mplayer  Qt5.9.1          rockx_type.h  .sudo_as_admin_successful  .vim          公共的    图片  音乐

如果没有,就创建它:

developer@aiot1808-devel:~/work$ cd ~
developer@aiot1808-devel:~$ mkdir .ssh
developer@aiot1808-devel:~$ cd .ssh

创建第一个公钥:
(利用ssh-keygen命令创建后,可以一路回车)

developer@aiot1808-devel:~/.ssh$ ssh-keygen -t rsa -C "UserA@qq.com"

创建第二个公钥:
(第一步时,要注意改一下生成的新公钥名字,不然会把第一个公钥给覆盖掉。然后再一路回车)

developer@aiot1808-devel:~/.ssh$ ssh-keygen -t rsa -C "UserB@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/developer/.ssh/id_rsa): /home/developer/.ssh/id_rsa_UserB
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/developer/.ssh/id_rsa_UserB.
Your public key has been saved in /home/developer/.ssh/id_rsa_UserB.pub.
The key fingerprint is:
SHA256:jj7y7WpUGnV7efp0LCSs3/zeKciScdQpnuzqnRFYtIo UserB@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|           .     |
|        . o .    |
|       . . =...  |
|      . o =o=oo  |
|       ESo++o= . |
|      oo ..=o o o|
|     .. . *o.= o |
|    ..o. o.++.+ o|
|     ++++ooo  .++|
+----[SHA256]-----+

确认生成结果

developer@aiot1808-devel:~/.ssh$ ls
id_rsa  id_rsa.pub  id_rsa_UserB  id_rsa_UserB.pub
文件名说明
id_rsa私钥,与第一个公钥对应
id_rsa.pub第一个公钥
id_rsa_UserB私钥,与第二个公钥对应
id_rsa_UserB.pub第二个公钥

3.修改配置文件

创建config文件

developer@aiot1808-devel:~/.ssh$ vim config

并写入以下内容:

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
 
Host github-UserB
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_UserB

确认内容:

developer@aiot1808-devel:~/.ssh$ ls
config  id_rsa  id_rsa.pub  id_rsa_UserB  id_rsa_UserB.pub
developer@aiot1808-devel:~/.ssh$ cat config
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
 
Host github-UserB
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_UserB
developer@aiot1808-devel:~/.ssh$ 

4.把两个公钥部署到不同的GitHub账号中

 这一步网上有许多教程,在此不作详细说明。

二、远程GitHub仓库管理

1.克隆UserA的GitHub仓库

developer@aiot1808-devel:~/.ssh$ cd ~
developer@aiot1808-devel:~$ git clone git@github.com:UserA/EASY-EAI-Toolkit-C-Demo.git
正克隆到 'EASY-EAI-Toolkit-C-Demo'...
remote: Enumerating objects: 368, done.
remote: Counting objects: 100% (368/368), done.
remote: Compressing objects: 100% (243/243), done.
remote: Total 368 (delta 122), reused 338 (delta 96), pack-reused 0
接收对象中: 100% (368/368), 3.19 MiB | 121.00 KiB/s, 完成.
处理 delta 中: 100% (122/122), 完成.
developer@aiot1808-devel:~$ ls

2.克隆UserB的GitHub仓库

注意:把UserA的仓库Host:github.com,替换成UserB的仓库Host:github-UserB
这里指定了Host,就会根据刚刚在~/.ssh里创建的config去索引不同的公钥

developer@aiot1808-devel:~/.ssh$ cd ~
developer@aiot1808-devel:~$ git clone git@github-UserB:UserB/Navigation.git
正克隆到 'Navigation'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
接收对象中: 100% (6/6), 完成.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0
developer@aiot1808-devel:~$

总结

然后就可以愉快地工作了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值