利用ssh config管理多个git

背景

用过github的都知道,可以通过两种方式获取远程repo。第一种是ssh,第二种是https。选择ssh是更安全的一种方式,而使用ssh需要在本地生成公匙和私匙,然后在远程仓库配置公匙,才可以连接成功。
通常情况下,我们只需要在本地生成一个ssh-key即可,但是如果我们有多个远程仓库账号,比如github、gitlab、码云以及公司内部自己搭的git,这些仓库的域名都是不同的,这时我们就需要在本地生成多个ssh-key,来区分不同的仓库和key之间的对应关系。
本文就教大家如何生成多个ssh-key,以及利用config文件配置ssh。

生成多个ssh-key

上操作,只需要一行

ssh-keygen -t rsa -f ~/.ssh/key名 -C 'xxx@xx.com'

-t:加密方式(也可以是ed25519,一般是rsa)
-f:key文件名(相对或绝对路径)
-C:仓库账号的邮箱

不同的key取不同的名,但要注意必须放~/.ssh目录下

运行后你应该可以在~/.ssh目录下看到生成的密匙和公匙,如下图:
在这里插入图片描述

在远程仓库添加ssh-key

比如github就在设置中,添加ssh公匙,就是把生成的公匙xxx.pub内容复制上去,保存即可。

config文件配置

在~/.ssh目录下创建config文件,可以用命令行

touch ~/.ssh/config

编辑config文件,内容如下:

Host 远程域名
    IdentityFile 密匙位置
    User 用户

大部分人容易写错Host和User,这里教大家如何简单地获取自己仓库的这两个参数。

首先,如果你本地已经拉了远程项目,你可以在项目根目录的/.git文件夹下发现config文件,打开config文件,你可以看到如下信息(以我自己一个GitHub仓库为例):

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = git@github.com:ly15927086342/Font-end-knowledge-repo.git
	fetch = +refs/heads/*:refs/remotes/origin/*

关注[remote “origin”]下的url,可以观察下,@前的部分是User,@后面的域名是Host,如果是以上的文件,我们可以配置以下的config:

Host github.com
    IdentityFile ~/.ssh/id_rsa_github
    User git

类推gitlab应该是这样配置

Host gitlab.com
    IdentityFile ~/.ssh/id_rsa_gitlab
    User git

所以一个config文件中配置多个ssh的写法就是:

Host github.com
    IdentityFile ~/.ssh/id_rsa_github
    User git
    
Host gitlab.com
    IdentityFile ~/.ssh/id_rsa_gitlab
    User git
...

检测ssh配置

输入以下命令

ssh -T 远程域名

例如 ssh -T gitlab.com
如果连接成功,应该会出现以下提示

Welcome to GitLab, @ly15927086342!

当然,github出现以下信息也是成功的

Hi ly15927086342! You've successfully authenticated, but GitHub does not provide shell access.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HouGISer

HouGiser需要你的鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值