文章目录

  • 我的安装环境
  • 一、Git安装
  • 1、官网下载 git
  • 2、查看环境变量是否自动配置了
  • 3、验证安装成功
  • 二、多站点SSH Key配置
  • 1、设置全局的用户名和邮箱
  • 2、小试牛刀 - 生成单个 ssh key
  • 3、管理`Git`生成的多个`ssh key`
  • 三、如何使用?


我的安装环境

环境

版本

操作系统

win7 64位 + win10 64位

git

2.14.2.windows.3

命令行小黑窗

Git Bash Here

一、Git安装

1、官网下载 git

windows下载地址

mac下载地址

Linux/Unix下载地址

2、查看环境变量是否自动配置了

安装完毕h后,查看环境变量是否自动配置了

我自定义将Git安装在D:/Git的,所以我的环境变量是指向: D:\Git\cmd;

若没有自动配置,请手动配置 -->指向你的git的安装目录的cmd目录

3、验证安装成功

打开windowsCMD终端输入:

# 验证git是否安装成功,输出版本号就代表安装成功
git --version

二、多站点SSH Key配置

我们都知道Git在拉取、提交代码时有两种协议:
一种是HTTP/HTTPS协议,不需要任何配置,只需要输入用户名+密码即可使用
另一种是SSH协议,但需要配置ssh公钥和私钥,是一种一劳永逸的协议,配置后不再需要输入用户名和密码,安全、方便后续集成

这里着重讲SSH协议,现在我们基本都不会只单单使用一个代码托管网站,所以就涉及到需要在一台电脑上配置多个站点SSH Key以方便拉取代码

  • 注: 以下命令均是在 Git Bash Here执行的,不能使用windowsCMD终端
  • .ssh目录下点击鼠标右键进入Git Bash Here
  • 【Git】Git安装 + 多站点SSH Key配置_git


1、设置全局的用户名和邮箱

```
# 配置一下全局的用户名和邮箱
git config --global user.name "自定义用户名"
git config --global user.email "邮箱"

# 取消全局设置
git config --global --unset user.name
git config --global --unset user.email
```

2、小试牛刀 - 生成单个 ssh key

ssh-keygen -t rsa -C "你的邮箱" -f "自定义文件名"

生成单个SSH Key时可以连续回车,不输入密钥文件名字和密码

【Git】Git安装 + 多站点SSH Key配置_用户名_02


生成后会在C:\Users\用户名.ssh目录下产生两个文件,如图:

【Git】Git安装 + 多站点SSH Key配置_用户名_03

到这里,只需要在你的代码托管网站上添加SSH 公钥,将id_rsa.pub文件内的字符串复制粘贴进去,就可以正常使用SSH协议了!

3、管理Git生成的多个ssh key

  • 问题说明

当有多个代码托管网站的账号的时候,比如一个github,一个码云的,一个gitlab的,还有公司内部自己搭建的代码托管服务器。
当你生成多个ssh key时:

反正就是只有一个站点能用,搞得我怀疑人生
如果邮箱不同,生成第二个git的ssh key的时候会覆盖第一个,导致必然有一个用不了。

  • 解决方法

我们可以在.ssh目录下新建一个config文件并添加一些配置,进行管理我们的各个站点的帐号,就可以解决令人头疼的问题啦

  • 具体步骤
  1. 生成第一个站点的ssh key
ssh-keygen -t rsa -C "yourmail@qq.com" -f "自定义文件名1"

注意:请确保我们的Git Bash Here.ssh目录下哟!
不然生成的文件没有在.ssh目录下,还需要我们移动到.ssh目录下

  1. 生成第二个站点的ssh key
ssh-keygen -t rsa -C "yourmail@qq.com" -f "自定义文件名2"

生成后的文件如下图所示:

【Git】Git安装 + 多站点SSH Key配置_ssh_04

  1. 添加私钥到秘匙管理器
  • 执行ssh-agent命令

ssh-agent是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,
其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-vtu2Stw1WRUj/agent.10928; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11716; export SSH_AGENT_PID;
echo Agent pid 11716;
  • 添加私钥
$ ssh-add ~/.ssh/gitee_id_rsa
Could not open a connection to your authentication agent.

在执行上面的添加私钥命令时,如果你也出现Could not open a connection to your authentication agent. 解决方法如下:

  1. 输入如下命令查看已开启的ssh-agent线程
$ ps aux | grep ssh
11716       1   11716      11716  ?         197609 19:32:41 /usr/bin/ssh-agent
  1. 执行命令杀死线程:kill -9 线程号
$ kill -9 11716
  1. .ssh目录执行如下命令:
exec ssh-agent bash
eval ssh-agent -s
  1. 我的执行结果:
  2. 好了,现在我们可以成功添加私钥到秘匙管理器ssh-agent当中了,执行ssh-add命令
$ ssh-add ./gitee_id_rsa
Identity added: ./gitee_id_rsa (./gitee_id_rsa)

$ ssh-add ./gitlab_id_rsa
Identity added: ./gitlab_id_rsa (./gitlab_id_rsa)
  1. .ssh目录下新建config文件,并添加配置信息
    config文件内容如下:
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
User tanpeng

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
User tanpeng

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
User tanpeng

配置文件说明:

# 这个是真实的域名地址
HostName 
# 这里是id_rsa的地址
IdentityFile 
# 配置登录时用什么权限认证--可设置publickey,password publickey,keyboard-interactive等
PreferredAuthentications 
# 配置使用用户名
User

关于Host参数:
每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostNameIdentityFile两个属性即可
Host的名字可以取为自己喜欢的名字,不过这个会影响git相关命令

例如:
Host mygithub 这样定义的话,git@后面紧跟的名字将会变为mygithub,如下
git clone git@mygithub:blog/AndroidRotateAnim.git 就相当于你配置的HostName真正的域名映射成了Host后面的配置的名字

注意: 不要在配置文件中添加下面这样的注释,
这种注释在读取该配置文件时会导致报错,不被识别

HostName git.glanway.com //这里填你们公司的git网址即可
  1. 将公钥添加到对应的站点
  2. 测试连接
#测试连接github
ssh -T git@github.com    

#测试连接gitlab      
ssh -T git@gitlab.com   

#测试连接码云     
ssh -T git@gitee.com

看到如下输出表示配置成功:

【Git】Git安装 + 多站点SSH Key配置_用户名_05

到这里,我们就完成了多站点的ssh key的配置,可以随心所欲拉代码、做服务集成了!
多站点ssh就是要让我们为所欲为!

三、如何使用?

  1. 克隆代码
# 注意!!!我们直接复制 SSH 地址,执行 git clone,是会出问题的
 git clone git@gitee.com:tpswpu/top-10-sorting-algorithms.git

 # 正确的 git clone 方式,此处我们应该使用上面 config 文件配置的 Host 值
 git clone git@peng.gitee.com:tpswpu/top-10-sorting-algorithms.git