1、Git文件的四种传输协议

Git有四种不同的协议用来传输资料,分别是:
本地协议Local
HTTP协议
SSH协议(Secure Shell)
Git协议

1.1 本地协议

使用场景:本地协议常见的情况就是,远程仓库地址在同一主机上的其他目录。
该协议因为无法外网访问,故而在实践中并不常见,不做详细了解。
详情见Git的基础概念。Git文件的四种传输协议

1.2 HTTP协议

目前主流提供https地址,github、gitee、gitlab均支持。
如果你在 HTTP 上使用需授权的推送,管理凭证会比使用 SSH 密钥认证麻烦一些。 然而,你可以选择使用凭证 存储工具,比如 macOS 的 Keychain 或者 Windows 的凭证管理器

一般使用443端口;通过用户名/密码授权,可用性比较高;速度相较快点。

1.3 SSH协议

一般使用22端口;通过先在本地生成SSH密钥对再把公钥上传到服务器;速度相较慢点。

SSH协议不支持匿名访问 Git 仓库。 如果你使用 SSH,那么即便只是读取数据,使用者也必须通 过SSH 访问你的主机, 这使得 SSH 协议不利于开源的项目,毕竟人们可能只想把你的仓库克隆下来查看。 如果你只在公司网络使用,SSH 协议可能是你唯一要用到的协议。 如果你要同时提供匿名只读访问和 SSH 协议, 那么你除了为自己推送架设 SSH 服务以外, 还得架设一个可以让其他人访问的服务。

1.4 Git协议

缺乏授权机制。 把 Git 协议作为访问项目版本库的唯一手段是不可取的。 一般的做法里,会同时 提供 SSH 或者 HTTPS 协议的访问服务,只让少数几个开发者有推送(写)权限,其他人通过 git:// 访问只有 读权限。 Git 协议也许也是最难架设的。 它要求有自己的守护进程,这就要配置 xinetd、systemd 或者其他 的程序。 它还要求防火墙开放 9418 端口,但是企业防火墙一般不会开放这个非标准端口。 而大型的企业防火墙通常会封锁这个端口。

该协议在实际实践中使用也比较少,不做详细了解。
详情见Git的基础概念。Git文件的四种传输协议

2、Windows使用http协议

2.1 一般github、gitee这样开源托管的网站都可以使用http协议。

2.2 清除本地缓存的git账户和密码,托管在windows凭证中。

操作路径:控制面板->用户账户->凭据管理器->管理Windows凭证->Windows凭据,逐一清理。
image.png

2.3再次clone项目,提示输入用户名和密码,正确输入后会再次保存到Windows凭证中。

1659804500962_320D1275-C79C-4cdc-A3DF-A260BE34D0DA.png

3、Windows多用户SSH配置

3.1、公司一般会搭建gitlab作为git服务故而使用ssh协议访问。

像我们公司部门有个gitlab(地址为:http://gitlab.xxx.group/),后来公司也有gitlab(https://code.xxx.cn/),迁移过程中,有并存时期,就需要多用户配置。

3.2、配置步骤

3.2.1、本地生成公钥

C:\Users\admin\.ssh>ssh-keygen -t rsa -f id_rsa_gitlab_company -C "zhangsan@qq.cn"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_gitlab_company.
Your public key has been saved in id_rsa_gitlab_company.pub.
The key fingerprint is:
SHA256:efKwDgqa8i5pAbdJ20ObGI4UAp1ZiBUErR98hbmqfVE zhangsan@qq.cn
The key's randomart image is:
+---[RSA 3072]----+
|+B+*.o           |
|o.* o .          |
|.o.  o           |
|o.* + E  .       |
|o* % +  S .      |
|..O *    *       |
| +o  o. . .      |
|=+.... o         |
|=+o..   .        |
+----[SHA256]-----+

其中admin为电脑当前用户,上述命令会在C:\Users\admin\.ssh目录下生成两个文件:
id_rsa_gitlab_company
id_rsa_gitlab_company.pub
前者为私钥,后者为公钥。

3.2.2、gitlab上配置公钥

复制id_rsa_gitlab_company.pub的内容,登陆公司gitlab,

image.png
image.png

3.2.3、本地配置config文件

新建或覆盖config文件,无后缀
新增内容:

# code.xxx.cn
Host code.xxx.cn
HostName code.xxx.cn
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab_company

image.png
上图在idea的Terminal中执行所得。

3.2.4、重复上述配置

image.png

引用记录
Git HTTPS和SSH的区别
Git的基础概念。Git文件的四种传输协议
Windows设置多个git账号,进行多用户配置
10.6 Git 内部原理 - 传输协议
GitLab克隆代码将SSH切换为HTTPS方式

banbogou
6 声望0 粉丝