转载请注明出处:https://blog.csdn.net/mythmayor/article/details/107462004
引言
Git的传输协议一共分为四种:本地、ssh、git和http。我们先来简单介绍一下这四种协议。
1.本地协议
本地协议:顾名思义,远程仓库在该协议中的表示,就是硬盘上的另一个目录 优点:简单 缺点:所有迭代仓库存储本地一台电脑的情况,增加灾难性数据损失的可能性。
$ git clone file:///opt/git/project.git
2.ssh协议
ssh协议:唯一一个同时支持读写操作的网络协议 优点:安全-- 所有数据传输都是加密和授权的,高效–传输之前尽可能压缩数据 缺点:因为安全的机制的存在,它不能实现仓库的匿名访问。
$ git clone ssh://user@server:project.git
3.git协议
git协议: 优点:最快 缺点:缺少授权机制
$ git clone git@gitlab.com:xxxxxxx/text.git
4.http协议
http/s协议:超文本传输协议 优点:简便 缺点:效率更低
$ git clone https://gitlab.com/xxxxxxxx/text.git
从上面的对比结果来看,用ssh协议确实更有优势。当然,这并不是本文想要重点阐述的问题。
我们在使用ssh协议的时候,需要生成ssh key,如果多个平台(例如同时使用GitHub和Gitlab)都要使用ssh,那么就要生成多组ssh key并进行配置。
一、生成SSH KEY
Linux、mac用户使用默认终端即可,Windows下建议使用CMD命令操作,进入到C:/Users/用户名/.ssh目录下,执行以下命令:
$ ssh-keygen -t rsa -C "你的邮箱” -f id_rsa_github
如上所示,我在这里生成了github平台的ssh key,如果你想要生成其它平台的,你可以将id_rsa_github改成id_rsa_gitlab、id_rsa_company或其它任何你想改成的名字。
Windows会在C:/Users/用户名/.ssh目录下生成ssh key的文件。
二、添加私钥
执行以下命令:
ssh-add ~/.ssh/id_rsa_github
如果执行ssh-add时提示"Could not open a connection to your authentication agent",则需先执行以下命令:
ssh-agent bash
添加成功会出现提示:Identity added 等字样。
三、查看私钥列表是否存在
执行以下命令:
ssh-add -l
如果有列表展示出来则证明添加成功了。
四、添加或修改配置文件config
在目录下创建config文件,并在该文件中添加或修改以下内容
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件(可以直接填写ip地址)
# HostName : 要登录主机的主机名(建议与Host一致)
# User : 登录名(如gitlab的username)
# IdentityFile : 指明上面User对应的identityFile路径
# Port: 端口号(如果不是默认22号端口则需要指定)
Host github.com
HostName ssh.github.com
User <your-email> #你的Github邮箱
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
Port 443
Host <gitlab-address> #公司的gitlab地址
HostName <gitlab-address> #与Host保持一致即可
User <your-email> #你的Gitlab邮箱
IdentityFile ~/.ssh/id_rsa_gitlab
Port <gitlab-port> #公司的gitlab端口
五、将公钥添加到Github、Gitlab等平台。
在Github、Gitlab等平台,添加ssh的步骤一般为:点击个人中心,然后点击设置(Settings),之后就会看到有一项关于SSH设置的选项,点击打开即可。
Github
打开生成的id_rsa_github.pub文件,将内容复制到下面的输入框中
Gitlab
打开生成的id_rsa_gitlab.pub文件,将内容复制到下面的输入框中并点击"Add key"按钮
五、用ssh命令测试验证
最后可以通过以下命令进行验证了:
ssh -T git@github.com
或
ssh -T git@<IP-address>
六、使用
到这里你就可以使用SSH协议了,记得在Git地址旁边的选项中将协议更改为SSH就好了。