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凭据,逐一清理。
2.3再次clone项目,提示输入用户名和密码,正确输入后会再次保存到Windows凭证中。
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,
3.2.3、本地配置config文件
新建或覆盖config文件,无后缀
新增内容:
# code.xxx.cn
Host code.xxx.cn
HostName code.xxx.cn
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab_company
上图在idea的Terminal中执行所得。
3.2.4、重复上述配置
引用记录
Git HTTPS和SSH的区别
Git的基础概念。Git文件的四种传输协议
Windows设置多个git账号,进行多用户配置
10.6 Git 内部原理 - 传输协议
GitLab克隆代码将SSH切换为HTTPS方式
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。