逍遥谷

记录日常的点点滴滴

0%

本地管理和切换多个github账号

前言

大多数的我们都会遇到这样一个问题:公司有一个 github 账户,这个是专门为工作准备的。而我们自己也有一个自己的私人 github 账户,有事没事做做自己的项目,写写自己感兴趣的东西。可是,我们怎么在电脑上把公司 github 切换到自己的私人github 账号上呢?

操作过程

  1. 创建ssh密钥;
  2. 将密钥添加到 github 账户;
  3. 创建 config 文件,管理单独的 key
  4. 更新存储的 key
  5. 测试 git clone 和 git push
  6. 在终端上切换 github 账号

注意:以下为windows上操作,如果是在别的操作系统上,直接换成对应的操作命令即可。

创建SSH密钥

以多个帐号为例,一个帐号为admin,一个帐号为manager

  • 打开cmd
  • 依次执行命令
1
2
3
cd C:\Users\account\.ssh
ssh-keygen -t rsa -C "admin@xxx.com"
ssh-keygen -t rsa -C "manager@xxx.com"
  • 当出现 “Enter file in which to save the key” 的提示时,将文件保存为 id_rsa_<>。将文件保存为 ~/.ssh/id_rsa_admin和 ~/.ssh/id_rsa_manager;

生成后会在C:\Users\account\.ssh中看到以下四个文件

  • id_rsa_admin
  • id_rsa_admin.pub
  • id_rsa_manager
  • id_rsa_manager.pub

将各自新密钥绑定到各自对应github账号

此处不做详细描述

创建一个配置config文件来管理key

在C:\Users\account\.ssh路径中创建一个名为config的文件

编辑文件内容:

1
2
3
4
5
6
7
8
9
Host admin
HostName github.com
User git
IdentityFile C:\Users\account\.ssh\id_rsa_admin

Host manager
HostName github.com
User git
IdentityFile C:\Users\account\.ssh\id_rsa_manager

更新存储的key

在更新存储之前,我们要先检查一下本地的 OpenSSH 服务有没有开启,不然会报错。

开启 ssh 服务的流程为:

  1. 设置 → 管理可选功能 → 添加功能 → [OpenSSH服务器]
  2. 计算机管理 → 服务和应用程序 → 服 务→ OpenSSH Authentication Agent&OpenSSH Server → 右击

开启SSH服务之后,我们就可以使用ssh命令了。

清除当前存储的认证:

1
C:\Users\account\.ssh\>ssh-add -D

增加新的keys:

1
2
C:\Users\account\.ssh\>ssh-add id_rsa_admin
C:\Users\account\.ssh\>ssh-add id_rsa_manager

验证一下! github 是否能识别到这些 keys,在cmd中输入:

1
ssh -T admin

可以看到 “Hi huangyuanzhen! You’ve successfully authenticated, but GitHub does not provide shell access.” 的提示语。这表明,github 能识别这些 keys 了。

测试 clone 和 push

找个admin帐号下对应的正常的项目,举个例子git地址为:git@github.com:xxxx(github帐号)/hello-github.git

将地址改为:git@admin:xxxx(github帐号)/hello-github.git

然后测试正常的clone和push操作

在终端上切换 github 账号

如果之前已经用 git remote add 和远程 仓库建立过连接,我们需要先清除当前连接,不然会报错:“fatal: remote origin already exists.”;清除当前连接之后,然后连接新的账号里的仓库,如:

1
2
git remote rm origin
git remote git add origin git@admin:xxxx/work-test.git

这样就能做到切换远程,必须将地址改为对应的config里面的host

资料

原文链接:https://my.oschina.net/hyzccc/blog/3042701