本地项目开发使用的是gitlab,但是有时候会使用github存储自己写的小demo。之前使用的时候发现,只能使用其中一个,而不能在系统中同时存在两个的ssh,经过网上查询资料,自己从坑中慢慢爬了出来。。。
目录
文章目录
- @[toc]
- 生成gitlab ssh key
- 生成github ssh key
- 配置文件
- 配置用户名和邮箱
- 注意事项
- 测试
生成gitlab ssh key
- 找到/c/Users/you(系统名称)/.ssh文件夹。
- 在本文件夹【右键】点击【Git Bash Here】。
- 在命令行输入:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
。其中your_email@example.com是你注册gitlab的邮箱地址。回车。 - 当看到
Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):
时,括号里提示的是生成ssh的默认文件名id_rsa
,在这里gitlab就可以使用默认的文件名(我自己由于原来就有了gitlab的ssh,所以我使用了默认名)。回车
。 - 后面步骤就是设置密码了,连续回车即可。
- 完成后就在本文件夹里看到id_rsa和id_rsa.pub两个文件,其中,id_rsa是私钥文件,id_rsa.pub是公钥文件。
- 将id_rsa.pub中的内容复制出来,并添加到gitlab 【settings】中的【SSH keys】中。
生成github ssh key
生成github ssh文件时,与生成gitlab的步骤是一样的,不同的是在:
- 第3步的邮箱更改为注册github的邮箱
- 第4步生成的文件名要与生成gitlab的文件名有所区分,我这里为
id_rsa_github
其他步骤一路回车即可。然后将id_rsa_github.pub中的内容复制出来添加到github 【settings】->【SSH Keys】中。
这两部完成之后还有重要的一步,将生成的SSH配置到ssh-agent
中。
配置文件
/c/Users/you(系统名称)/.ssh 目录下中创建config文件vi config
并添加一下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径):
#gitlab
Host 192.*.*.*(更改为本地gitlab的ip地址)
HostName 192.*.*.*(更改为本地gitlab的ip地址)
IdentityFile ~/.ssh/id_rsa
#github
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
其中Host是在clone代码时,git@Host中的Host。在bash中运行
ssh-agent.exe bash
获得权限,然后依次在命令行输入(添加私钥)
ssh-add id_rsa #添加gitlab私钥
ssh-add id_rsa_github #添加github私钥
然后就可以使用命令
ssh-add -L #查看公钥
ssh-add -l #查看私钥
配置用户名和邮箱
gitlab由于是经常使用的,所以用户名和邮箱配置为全局的
cd **/gitlab #存放gitlab代码的路径
git init
git config --global user.name 'gitlab注册用户名'
git config --global user.email 'gitlab注册邮箱'
而github使用较少,所以用户名和邮箱配置为局部的
cd **/github #存放github代码的路径
git init
git config --local user.name 'github注册用户名'
git config --local user.email 'github注册邮箱'
注意事项
这里需要特别说明的是,全局用户名和邮箱配置一次就可以了,例如:
cd **/gitlab2 #更改了gitlab代码存放路径
git init #这一步可以省略,可以直接克隆代码
git clone *** #这里直接克隆相关代码即可,不需要再次配置全局用户名和邮箱
但是,对于github,每次更换存放路径都要重新配置局部的用户名和邮箱,例如:
cd **/github2 #存放github代码的路径
git init #不可省略
git config --local user.name 'github注册用户名' #每次更改路径都要重新配置用户名
git config --local user.email 'github注册邮箱' #每次更改路径都要重新配置邮箱
测试
对于gitlab
ssh -T git@192.*.*.* #gitlab的地址
出现
Welcome to GitLab, ***! #“***”表示你注册的用户名
说明配置成功。
对于github
ssh -T git@github.com
出现
Hi ***! You've successfully authenticated, but GitHub does not provide shell access. #“***”表示注册的用户名
说明配置成功。
至此,整个配置过程已经完成,如有不对的地方,欢迎留言批评指正。