抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

背景

很多公司都会搭建私有gitlab仓库,而个人一般还会使用github或者oschina,这样就涉及到了多个托管仓库,在使用的时候,如何让git自动识别托管地址,并且使用正确的key?可能有的人会使用同一个id_rsa,如果是多个怎么半?

解决方案

这里以同时使用oschina和github为例,首先分别为两个托管网站生成私钥,如果是windows在git bash下运行。

1
2
ssh-keygen -t rsa -C "xxx1@xx.com"
ssh-keygen -t rsa -C "xxx2@xx.com"

image.png

此处,给一个名字,不然每次都默认是id_rsa会覆盖。例如id_rsa_oschina, id_rsa_github。

后面两项可以直接enter,这里忽略。

查看生成的公钥,将内容copy出来,在对应托管网站的setting的sshkey设置处添加。

1
cat ~/.ssh/id_rsa_github.pub

然后命令后使用命令创建一个config文件

1
2
3
4
5
6
7
8
# 进入登陆用户根目录下的.ssh文件夹
cd ~/.ssh

# 创建config文件
touch config

# 添加配置
vim config

命令具体内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
#oschina
Host oshcina
HostName oschina.net
PreferredAuthentications publickey
user testuser1
IdentityFile ~/.ssh/id_rsa_oschina

#github
Host github
HostName github.com
PreferredAuthentications publickey
user testuser2
IdentityFile ~/.ssh/id_rsa_github

Host: 别名,随便取

HostName: 对应托管网站的域名

PreferredAuthentications: 验证方式,publickey公钥, password密码

user: 登陆用户,如是是testuser1@github.com 就用testuser1

IdentityFile: 生成的私钥路径

将两个私钥分别添加到 ssh代理

1
2
ssh-add -K ~/.ssh/id_rsa_github
ssh-add -K ~/.ssh/id_rsa_oschina

然后分别试一下登陆是否成功把

1
2
ssh -T git@github.com
ssh -T git@git.oschina.net

评论