本地项目开发使用的是gitlab,但是有时候会使用github存储自己写的小demo。之前使用的时候发现,只能使用其中一个,而不能在系统中同时存在两个的ssh,经过网上查询资料,自己从坑中慢慢爬了出来。。。


目录

文章目录

  • @[toc]
  • 生成gitlab ssh key
  • 生成github ssh key
  • 配置文件
  • 配置用户名和邮箱
  • 注意事项
  • 测试

生成gitlab ssh key

  1. 找到/c/Users/you(系统名称)/.ssh文件夹。
  2. 在本文件夹【右键】点击【Git Bash Here】。
  3. 在命令行输入:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"。其中your_email@example.com是你注册gitlab的邮箱地址。回车
  4. 当看到Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):时,括号里提示的是生成ssh的默认文件名id_rsa,在这里gitlab就可以使用默认的文件名(我自己由于原来就有了gitlab的ssh,所以我使用了默认名)。回车
  5. 后面步骤就是设置密码了,连续回车即可。
  6. 完成后就在本文件夹里看到id_rsa和id_rsa.pub两个文件,其中,id_rsa是私钥文件,id_rsa.pub是公钥文件。
  7. 将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. #“***”表示注册的用户名

说明配置成功。


至此,整个配置过程已经完成,如有不对的地方,欢迎留言批评指正。