一、背景介绍
sshkey是方便和各种git仓库做权限验证使用的,省去每次拉取和提交代码需要输入用户名密码的步骤。但是有时候我们可能需要用不同的账号提交到不同的仓库,这时候就需要创建多个sshkey添加到不同的git仓库中。
二、创建sshkey
无论有没有创建过都可以使用下边命令进行创建
ssh-keygen -t rsa -C "<您的 Github 邮箱>"
1.之前没有创建过
如果没有创建过会提示输入密码(直接两次回车)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
直接回车默认没有密码,因为我们本来就是为了省去输入密码的繁琐步骤
2.之前创建过
会提示输入文件名
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/[user]/.ssh/id_rsa):
任意输入一个自己可以区分的名称就行比如 id_rsa_github,但是需要带上所有路径
/c/Users/[user]/.ssh/id_rsa_github
或者在创建的时候直接指定文件名
$ ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/id_rsa_github
然后还是两次回车不设置密码
三、查看sshkey
一般情况下本地创建的sshkey 在C/用户/[username]/.ssh 文件夹下,也可以通过gitbash窗口执行命令
cd ~/.ssh
ls
查看公共秘钥
$ cat id_rsa_github.pub
将放回的 ssh-rsa 开头的字符串或者文件夹下.pub结尾的文件中的字符串,直接复制到git仓库中的设置sshkey的公钥中就行
四、创建config
如果是单个账户的话,现在就可以直接使用了,如果是多个账户就需要单独在配置不同git仓库使用的sshkey验证,不然本地默认会用id_rsa.pub的公钥进行验证,执行命令或者直接新建一个名称为config的文件
$ cd ~/.ssh
$ touch config
然后打开文件输入如下配置内容
# 1.个人git
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
# 2.公司git
Host gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
PreferredAuthentications publickey
# 3.gitee
# 注意:多个Host公用一个公钥时,
# 对应的HostName和Port必须跟在Host后面
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
保存后就可以直接拉取或者提交对应仓库的代码了~