文章目录
- 我的安装环境
- 一、Git安装
- 1、官网下载 git
- 2、查看环境变量是否自动配置了
- 3、验证安装成功
- 二、多站点SSH Key配置
- 1、设置全局的用户名和邮箱
- 2、小试牛刀 - 生成单个 ssh key
- 3、管理`Git`生成的多个`ssh key`
- 三、如何使用?
我的安装环境
环境 | 版本 |
操作系统 | win7 64位 |
git | 2.14.2.windows.3 |
命令行小黑窗 | Git Bash Here |
一、Git安装
1、官网下载 git
2、查看环境变量是否自动配置了
安装完毕h后,查看环境变量
是否自动配置了
我自定义将Git
安装在D:/Git
的,所以我的环境变量是指向: D:\Git\cmd;
若没有自动配置,请手动配置 -->指向你的git
的安装目录的cmd
目录
3、验证安装成功
打开windows
的 CMD
终端输入:
# 验证git是否安装成功,输出版本号就代表安装成功
git --version
二、多站点SSH Key配置
我们都知道
Git
在拉取、提交代码时有两种协议:
一种是HTTP/HTTPS
协议,不需要任何配置,只需要输入用户名+密码即可使用
另一种是SSH
协议,但需要配置ssh
公钥和私钥,是一种一劳永逸的协议,配置后不再需要输入用户名和密码,安全、方便后续集成这里着重讲
SSH
协议,现在我们基本都不会只单单使用一个代码托管网站,所以就涉及到需要在一台电脑上配置多个站点SSH Key
以方便拉取代码
- 注: 以下命令均是在
Git Bash Here
执行的,不能使用windows
的CMD
终端 - 在
.ssh
目录下点击鼠标右键进入Git Bash Here
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
时可以连续回车,不输入密钥文件名字和密码
生成后会在C:\Users\用户名.ssh
目录下产生两个文件,如图:
到这里,只需要在你的代码托管网站上添加
SSH 公钥
,将id_rsa.pub
文件内的字符串复制粘贴进去,就可以正常使用SSH协议
了!
3、管理Git
生成的多个ssh key
- 问题说明
当有多个代码托管网站的账号的时候,比如一个github,一个码云的,一个gitlab的,还有公司内部自己搭建的代码托管服务器。
当你生成多个ssh key
时:反正就是只有一个站点能用,搞得我怀疑人生
如果邮箱不同,生成第二个git的ssh key
的时候会覆盖第一个,导致必然有一个用不了。
- 解决方法
我们可以在
.ssh
目录下新建一个config
文件并添加一些配置,进行管理我们的各个站点的帐号,就可以解决令人头疼的问题啦
- 具体步骤
- 生成第一个站点的
ssh key
ssh-keygen -t rsa -C "yourmail@qq.com" -f "自定义文件名1"
注意:请确保我们的Git Bash Here
在.ssh
目录下哟!
不然生成的文件没有在.ssh
目录下,还需要我们移动到.ssh
目录下
- 生成第二个站点的
ssh key
ssh-keygen -t rsa -C "yourmail@qq.com" -f "自定义文件名2"
生成后的文件如下图所示:
- 添加私钥到秘匙管理器
- 执行
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.
解决方法如下:
- 输入如下命令查看已开启的ssh-agent线程
$ ps aux | grep ssh
11716 1 11716 11716 ? 197609 19:32:41 /usr/bin/ssh-agent
- 执行命令杀死线程:
kill -9 线程号
$ kill -9 11716
- 在
.ssh
目录执行如下命令:
exec ssh-agent bash
eval ssh-agent -s
- 我的执行结果:
- 好了,现在我们可以成功添加私钥到秘匙管理器
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)
- 在
.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
主要配置HostName
和IdentityFile
两个属性即可
Host的名字可以取为自己喜欢的名字,不过这个会影响git相关命令例如:
Host mygithub
这样定义的话,git@
后面紧跟的名字将会变为mygithub
,如下git clone git@mygithub:blog/AndroidRotateAnim.git
就相当于你配置的HostName真正的域名映射成了Host后面的配置的名字
注意: 不要在配置文件中添加下面这样的注释,
这种注释在读取该配置文件时会导致报错,不被识别
HostName git.glanway.com //这里填你们公司的git网址即可
- 将公钥添加到对应的站点
- 测试连接
#测试连接github
ssh -T git@github.com
#测试连接gitlab
ssh -T git@gitlab.com
#测试连接码云
ssh -T git@gitee.com
看到如下输出表示配置成功:
到这里,我们就完成了多站点的
ssh key
的配置,可以随心所欲拉代码、做服务集成了!
多站点ssh
就是要让我们为所欲为!
三、如何使用?
- 克隆代码
# 注意!!!我们直接复制 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