GitHub多账号管理

如何在一个主机上使用多个github账号?

1. 背景

在工作时,不管是使用gitlab还是公司自己基于git建立的代码托管系统,我们都会拥有一个使用公司邮箱注册一个github账号。但我们总归需要有自己的‘私人空间’,比如自己写一些demo,或者作为云盘等。此时就需要一台电脑管理 2个及以上的github账号。

**注:一定要关注公司的围墙红线,不要将公司相关资产上传至github等公共场所
**注:一定要关注公司的围墙红线,不要将公司相关资产上传至github等公共场所
**注:一定要关注公司的围墙红线,不要将公司相关资产上传至github等公共场所

2. 思路

ssh连接方式小使用到RSA技术,如果我们没有改动过ssh的默认目录,那么我们会在~/.ssh目录下看到两个秘钥和一个文件

id_rsa:私钥

id_rsa.pub:公钥

known_hosts:远程服务器ip及公钥,用于验证服务器公钥是否更改

此时好需要一个配置文件,git在解析的时候会读取配置文件,从而获取相应账号的秘钥,具体配置稍后说明。

具体步骤:

1)生成不同名称的秘钥

2)更改配置文件

3)取消全局用户名

3. 实操

ssh-keygen:生成、管理和转换认证密钥

常用的可选参数

-C comment
提供一个新注释,即备注

-c 要求修改私钥和公钥文件中的注释。本选项只支持 RSA1 密钥。
程序将提示输入私钥文件名、密语(如果存在)、新注释。

-f filename
指定密钥文件名。

-T output_file
测试 Diffie-Hellman group exchange 候选素数(由 -G 选项生成)的安全性。

-t type
指定要创建的密钥类型。可以使用:“rsa1”(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)

(1)在.ssh目录下生成自定义名称的秘钥

ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com

复制公钥并添加到GitHub上你账户上,路径为 setting -> ssh and GPG keys

(2)在.ssh目录下生成配置文件

如果有config文件直接编辑,否则生成。

config文件配置说明:

Host : 标识一个配置区段。

GlobalKnownHostsFile:指定一个或多个全局认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为:/etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2.

HostName:指定远程主机名,可以直接使用数字IP地址。如果主机名中包含 ‘%h’ ,则实际使用时会被命令行中的主机名替换。

IdentityFile:指定密钥认证使用的私钥文件路径。默认为 ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 或 ~/.ssh/id_rsa 中的一个。文件名称可以使用以下转义符:‘%d’ 本地用户目录
‘%u’ 本地用户名称
‘%l’ 本地主机名
‘%h’ 远程主机名
‘%r’ 远程用户名

可以指定多个密钥文件,在连接的过程中会依次尝试这些密钥文件。

Port:指定远程主机端口号,默认为 22 。

User:指定登录用户名。

UserKnownHostsFile:指定一个或多个用户认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为: ~/.ssh/known_hosts, ~/.ssh/known_hosts2.

# default                                                                       
Host default
HostName ssh.github.com
User userName
IdentityFile ~/.ssh/id_rsa
# two                                                                           
Host two
HostName ssh.github.com
User userName
IdentityFile ~/.ssh/id_rsa_2

(3)测试

# ssh -T git@host
ssh -T git@default
ssh -T git@two
# Hi IEIT! You've successfully authenticated, but GitHub does not provide shell access.

如果你遇到了如下的错误

git@github.com: Permission denied (publickey).

你可以尝试将新生成的秘钥需要加入到缓存:

 ssh-add -K ~/.ssh/id_rsa_xx

到这里就可以克隆远端的仓库了。并且此时可以使用sourceTree进行配置,后面的操作可以跳过

(4)删除全局配置

git config --global --unset 'user.name'
git config --global --unset 'user.email'

在自己的仓库下重新配置

git config user.name `xxx“
git config user.email `xxx@xxx.com`

(5)推送到远端

重新设置远端

# host 配置文件的host
# repo 仓库名
git remote add origin git@host:repo
git push origin master

之后再添加远程仓库的时候,就不能直接使用http的方式了,只能使用ssh方式.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值