首页 > 其他分享 >Git传输协议的对比分析

Git传输协议的对比分析

时间:2024-03-13 11:12:42浏览次数:21  
标签:协议 Git HTTP 传输 SSH https 对比 架设

Git有四种主要的协议来传输资料:1)本地协议(Local);2)HTTP协议;3)SSH(Secure Shell)协议;4)Git协议;其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常用,而Git协议由于缺乏授权机制且较难架设所以也不常用。最常用的便是SSH和HTTP(S)协议。

HTTP(S)优缺点

优点一:相对于SSH协议,可以使用用户名/密码授权是一个很大的优势,这样用户就不需要在使用Git之前先在本地生成SSH密钥对再把公钥上传到服务器。对非资深的使用者,或者系统上缺少SSH相关程序的使用者,HTTP协议的可用性是主要的优势。

优点二:企业防火墙一般会打开80和443这两个常见的http和https协议端口,使用http和https协议在架设了防火墙的企业里面就可以绕过安全限制正常使用Git,非常方便。

缺点:使用http/https协议除了速度慢之外,还有个最大的麻烦就是每次推送都必须输入口令。但是好在现在的操作系统或者其他的Git工具都提供了keychain的功能,可以把你的账户密码记录在系统里,例如OSX的Keychain或Windows的凭证管理器。

SSH的优缺点

优点一:SSH协议是一个验证授权的网络协议,其具有普遍性,架设和使用都很容易。

缺点一:SSH服务端一般使用22端口,企业防火墙可能没有打开这个端口。

缺点二:SSH 协议的缺点在于你不能通过它实现匿名访问。即便只要读取数据,使用者也要有通过SSH访问你的主机的权限,这使得SSH协议不利于开源的项目。如果你只在公司网络使用,SSH 协议可能是你唯一要用到的协议。如果你还要提供匿名只读访问的功能,那么你除了为自己推送架设SSH服务以外,还得架设一个可以让其他人访问的服务。

总结

HTTPS利于匿名访问,适合开源项目,可以方便被别人克隆和读取(但他没有push权限);毕竟为了克隆别人一个仓库学习一下你就要生成个ssh-key折腾一番还是比较麻烦,所以github除了支持ssh协议必然还提供了https协议的支持。而SSH协议使用公钥认证比较适合内部项目。当然了,现在的代码管理平台例如github、gitlab,两种协议都是支持的,基本上看自己喜好和需求来选择就可以了。

标签:协议,Git,HTTP,传输,SSH,https,对比,架设
From: https://www.cnblogs.com/bobbycheng/p/18070189

相关文章

  • docker-compose 部署gitlab
    主机ip:192.168.1.139[root@localhostgitlab_docker]#catdocker-compose.ymlversion:'3.1'services:gitlab:image:'gitlab/gitlab-ce:latest'container_name:gitlab#随着docker重启自动启动restart:alwaysenvironment:......
  • 工作中用到的一些git操作(持续更新)
    绑定远程gitgitremoteaddupstreamhttps://xxx.gitgitpullupstreammaster 通过命令指定upstream:比如,当前代码仓跟踪了两个upstream:$gitremote-vnisssh://[email protected](fetch)nisssh://[email protected](push)originssh://[email protected](fetch)originssh:......
  • 多人协作:git flow开发模式
    多人协作如何实现多人协作,共同开发一个项目,每个人负责一些功能?为每个人创建一个dev分支,或者以每个人负责的功能为命名创建dev分支(gitflow工作流)在GitHub中添加合作者1.个人添加在仓库的settings选项中,选择collaborators选项2.组织添加创建一个组织设置组织的一系列信......
  • GitHub推荐使用指南
    GitHub是什么?做代码仓库,代码托管的仓库,类似功能的还有CSDN、GitLab等使用步骤创建账号创建仓库第一步第二步将本地代码推送到远程仓库gitbranch-Mmain表示将主线命名为main实际使用提交直接执行以下即可推送master分支gitremoteaddoriginhttps://github.com/G......
  • 03-前后端数据传输格式-下
    请求:JSON转换为Java对象响应:Java对象转换为JSONJSON想完成跨内存(浏览器/服务器、服务器/服务器)的数据传输、对象转换,必须经过网络传输,而且需要一个传递信息的载体,还需要序列化和反序列化的操作传递信息的载体JSON简单来说就是特定格式的字符串,JSON的载体就是字符串。JS对......
  • Git推荐使用指南
    Git是什么?分布式版本控制的软件软件:安装到电脑上的工具版本控制:文件拷贝:论文->版本通过文件来控制,多个文件,不同的标注来确定各个阶段的版本本地版本控制:只有一个文件,但是通过本地控制软件可以追溯以前的所有版本(类似游戏存档),相比文件拷贝,视觉上不会存在多个文件过......
  • 技术笔记(8)git的部分进阶功能
    技术笔记(8)git的部分进阶功能‍学习笔记:‍与分支有关的git操作branch、checkout、merge查看分支:查看当前分支信息:gitbranch查看远程分支信息:gitbranch-r查看所有分支信息,包括本地和远程:gitbranch-a分支与分支:切换到某分支:gitcheckout从当前节点新建......
  • envi5.6对多个图像的同地点数据对比
    一:多视图窗口创建点击Views中的CreateNewView这里创建了两个窗口,也可以再次进行上述操作,创造第三个视图  二:图像的输入选择要对比的文件分别拖动到两个视窗(这里以①和②为例)中 三:链接图像对比点击如图红圈标记的按钮 把如图标记的按钮都打开接下来便可以在......
  • git 版本回退
    git版本回退1.方法12.方法22.1补充2.2revert多次版本3.两个区别1.方法1原有的代码分支与代码加一行代码做一次改变回退到指定版本gitreset--hard2a404ae22.方法2新加一行代码gitrevrt测试,它的commit-id:35c416da,然后我执行gitrevert35c416da......
  • Git 系列:简介安装以及配置管理
    目录简介安装简介Centos安装配置管理githelp概要选项示例git-docgitconfig概要选项变量示例初始化配置简介安装简介https://git-scm.com/Git是一个开源的分布式版本控制系统,用于有效、高速地处理从小到大的项目版本管理。它最初由Linux之父LinusTorvalds设计开发,旨在帮助管......