论git中使用https和ssh协议的区别

2023-10-29

论git中使用https和ssh协议的区别

SHELDON CUI'S BLOG 

2017-09-08 

  githttpsssh心得

http好还是ssh好?

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

最常用的便是SSH和HTTP(S)协议。git关联远程仓库可以使用http协议或者ssh协议。

HTTPS优缺点

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

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

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

SSH的优缺点

  • 优点1: 架设 Git 服务器时常用 SSH 协议作为传输协议。 因为大多数环境下已经支持通过 SSH 访问 —— 即时没有也比较很容易架设。 SSH 协议也是一个验证授权的网络协议;并且,因为其普遍性,架设和使用都很容易。
  • 缺点1: SSH服务端一般使用22端口,企业防火墙可能没有打开这个端口。

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

总结

HTTPS利于匿名访问,适合开源项目可以方便被别人克隆和读取(但他没有push权限);毕竟为了克隆别人一个仓库学习一下你就要生成个ssh-key折腾一番还是比较麻烦,所以github除了支持ssh协议必然提供了https协议的支持。

而SSH协议使用公钥认证比较适合内部项目。 当然了现在的代码管理平台例如github、gitliab,两种协议都是支持的,基本上看自己喜好和需求来选择就可以了。

简单理解ssh协议

ssh的协议理解起来比https简单多了,大家可以参考阮一峰老师的这篇文章SSH原理与运用 和 我的这篇文章ssh建立通道和认证原理

总结来看,就是SSH协议使用目前已经比较成熟的RSA这类非对称加密技术来实现了安全秘钥的协商: 目标主机把自己的公钥发送给客户端,客户端用公钥加密 一些东西 之后传给服务器,服务器用RSA私钥从中解出 一些东西,保证了 一些东西 防篡改、防泄密,最终协商出只有双方才知道的通信密钥。

github上使用ssh协议

如果要使用ssh协议来克隆或者push github上的代码,则git程序会采用ssh的校验机制。而由于github上所有仓库都是采用共用git账号体系的方式, 是无法用git用户登录github服务器的。各个用户只能通过公钥认证的方式使用此SSH账号访问版本库。 因此,你在执行 git clone命令之前,必须确保已经把ssh公钥放置到了github服务器上。

生成公钥可以看这里: github官方公钥配置教程

RSA公钥生成后,可以用mac上的拷贝命令,把公钥拷贝到剪切板:

 

# Copies the contents of the id_rsa.pub file to your clipboard

# pbcopy < ~/.ssh/id_rsa.pub

 

然后,去github上把这个公钥拷贝到网站的个人配置中(相当于在github服务器的~/.ssh/authorized_keys ),接下来就能愉快的进行克隆。

如果远程主机是自己可以控制的机器,也可以这样:

 

ssh-copy-id user@host

scp -P 22 id_rsa.pub root@192.168.1.77:/root/.ssh/authorized_keys

或追加

cat ~/.ssh/id_dsa.pub|ssh -p 22 root@192.168.1.91 `cat - >> ~/.ssh/authorized_keys`

注意一点: 当你把公钥设置到github上时,你会在UI界面上看到一个 fingerprint 的指纹,这个指纹其实就是你的公钥的指纹。你可以对比这个指纹是否跟你本机的公钥指纹相同,尽量把github上不熟悉的公钥都删掉

公钥指纹可以参考这篇文章:ssh建立通道的过程和认证原理

HTTPS协议如何保存凭证信息

HTTPS认证方式虽然需要输入账户密码,但现在也不需要每次都输入。这个凭据保存需要依赖一个凭据管理器,每个操作系统平台都有自己的凭据管理器。可以参考github官方提供的教程来配置

我这里介绍一个git的凭据管理方式:

 

# 建立凭据文件

$ touch ~/.git-credentials

$ vim ~/.git-credentials

在文件中加入带凭据的url信息:

 

https://{username}:{passwd}@github.com

然后告诉git使用这个凭据管理器:

 

$ git config --global credential.helper store

上面命令会在git配置文件 ~/.gitconfig 中设置上一个凭据地址:

 

[credential]

helper = store

refer

git之ssh和https密码配置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论git中使用https和ssh协议的区别 的相关文章

  • GIT代码管理: git remote add

    这里主要以 如何将一份已经写好的代码提交到两个git远端 为例 xff0c 更好地理解git remote add这句 xff1b 首先要明白一句代码的意思 xff0c 以github最经常的提示为例 xff1a 在这张图面里git ini
  • git中的后悔方法:rebase,revert,reset

    http zhaojunde1976 blog 163 com blog static 12199866820136119201752 如果git中提交了错误代码 怎么办 有三种选择 rebase revert reset revert 用
  • [Git] 代码管理之 Git(六)Git rebase 压缩提交历史

    我们在工作中 可能会出现这样的情况 一项工作由好几个同事同时完成 然后每个人针对当前的feature都有对应的提交 那么就会造成同一个feature有多次提交的这样的冗余存在 除此之外 如果我们自己针对同一个feature的每天的提交以及一
  • Git删除本地在远端已经删除的分支

    git remote prune origin
  • 论git中使用https和ssh协议的区别

    论git中使用https和ssh协议的区别 SHELDON CUI S BLOG 2017 09 08 git https ssh 心得 http好还是ssh好 git可以使用四种主要的协议来传输资料 本地协议 Local HTTP 协议
  • 前端自动埋点

    起源是在测试时候没有报错 系统功能不正常 和测试查找错误很麻烦 埋点就是在某个功能函数里上报一些信息 比较类试express的中间件机制 但是没有操作的权限 自定义express的打印日志中间件 app get req res gt con
  • 代码管理_阿里如何管理代码分支

    文章转载自 https mp weixin qq com s 0N3isbSZL4fM5HjZo1aafA 背景 在阿里内部 流行着许多有意思的工程实践 有些实践通过工具和流程嵌在集团的大环境里 外界不容易复制 有些实践则是流露在大家的日常
  • linux下svn命令大全

    1 将文件checkout到本地目录 svn checkout path path是服务器上的目录 例如 svn checkout svn 192 168 1 1 pro domain 简写 svn co 2 往版本库中添加新的文件 svn
  • git解决代码冲突、合并代码

    共同开发时提交代码会遇到代码冲突 第一次遇到就手足无措的我 打算写一篇博客记录下来 下次遇到稳如老狗 一 远程代码已有更新记录 忘记拉取远程代码 直接提交 单人开发时 我没有先拉远程代码再提交的习惯 千万不要学习 一定要先拉代码再提交 导致
  • win10 VS code 编译运行 C/C++的方法

    win10 VS code 编译运行 C C 的方法 具体配置过程如下链接 https zhuanlan zhihu com p 35178331 但中间出了点问题 CTRL ALT n 运行后 PS D C gt cd d C if gc
  • Window下CodeStriker Server的搭建

    Windows下Codestriker Server的搭建分为以下几个步骤 1 安装Perl解析器 这里以ActivePerl为例 安装没有什么难度 主要是用安装以后GUI的PPM去下载相关的PM组件 2 安装数据库并为codestrike
  • Gitlab的API调用

    1 概述 Gitlab作为一个开源 强大的分布式版本控制系统 已经成为互联网公司 软件开发公司的主流版本管理工具 使用过Gitlab的都知道 想要提交一段代码 可以通过git push提交到远程仓库 也可以直接在Gitlab平台上修改提交
  • 常用命令图解 & & git 错误 fatal: Not a valid object name: ‘master‘.

    亲测可用 若有疑问请私信 常用命令图解 转自Git 常用命令详解 二 阳光岛主的博客 CSDN博客 git命令 Git 是一个很强大的分布式版本管理工具 它不但适用于管理大型开源软件的源代码 如 linux kernel 管理私人的文档和源
  • [YOLO专题-28]:YOLO V5 代码管理 - 如何与官网协同开发自己的项目代码

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122519479 目录 前言
  • git submodule的使用

    开发过程中 经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用 而公共代码库的版本管理是个麻烦的事情 今天无意中发现了git的git submodule命令 之前的问题迎刃而解了 添加 为当前工程添加submodule
  • git rebase小计

    http www cnblogs com kym archive 2010 08 12 1797937 html git rebase 顾名思义 就是重新定义 re 起点 base 的作用 即重新定义分支的版本库状态 要搞清楚这个东西 要先
  • git-常见问题解决方法(全)

    git使用过程中遇到的问题解决方法记录 问题 1 更新代码后显示 unable to unlink old xxx xxx xx invalid argument 问题原因 要提交或更新的文件被系统线程占用 解决方法 把相关服务暂停 重新p
  • github token个人令牌

    remote Support for password authentication was removed on August 13 2021 remote Please see https docs github com en get
  • 太方便了,钉钉上就可完成代码发布审批啦!

    如今 不少企业的发布流程要求代码发布到生产环境前需要经过审批 这种发布审批流程 对企业的的CI CD工具提出了新要求 CI CD步骤里需要支持人工卡点审批 并在人工卡点审批通过后能自动触发后续的部署工作 云效流水线Flow发布审批示例 如上
  • 【Inno Setup】判别系统版本

    Code function IsXP32 Boolean var Version TWindowsVersion S String begin GetWindowsVersionEx Version S 主版本号 IntToStr Vers

随机推荐

  • 论文期刊一般的审稿流程

    一 经常在网上看到某某人在问什么期刊的审稿周期 或者是投稿已多久怎么还没消息之类的帖子 作为经常帮国内外期刊审稿的人 对编辑部相对有所了解 因此特意发帖告知 供大家交流 论文审稿是个复杂的过程 并不是像大部分作者想象的那样送个一个专家看个几
  • String 判断字符串是否包含某个字符

    contains 判断 s 是否包含 ss 包含返回true 不包含返回false String s 你好 String ss 你 boolean ii s contains ss if ii true System out println
  • STM32调试特定函数出现Cannot access Memory

    MDK5出现Cannot access Memory 1 问题 2 原因 3 总结 1 问题 程序每次执行到了特定函数的位置时 keil里面全速运行 一直出现Cannot access Memory 再后面就是进入硬件错误中断了 执行到这个
  • C#使用COM+实现事务控制,操作多个数据库

    其中大部分内容参考自http blog itpub net 10752043 viewspace 991224 上面的是sqlserver的操作方式 因为我实际项目是用的oracle 就拿oracle试了一下 为了自己记录或者方便其他人 其
  • Linux下如何配置环境变量

    基础知识 首先 我们来了解一下什么是 环境变量 环境变量 通俗讲是操作系统或程序执行时候默认设定的参数 比如 PATH 路径变量 当要执行某个命令或程序的时候默认寻找的路径 然后 我们再来了解一下环境变量都有哪些类型 环境变量的分类 根据变
  • C++的类型

    C 的类型 按照标准 C 只有两种类型 基本类型和复合类型 但是里面细节多导致彻底理解它们有难度 所以这里只是简单总结一下 基本类型 基本类型分成算术类型和两种特殊的类型 算术类型 算术类型分成整数类型和浮点数类型两种 整数类型 以下都是整
  • 在springboot中使用Sse(Server-sent Events)Web实时通信技术-服务器发送事件SseEmitter

    最近在练习项目时需要用到消息实时推送技术 了解到有两种实时通信技术供我选择 SSE和WebSocket 详细了解后得知SSE是基于http协议 无需导入其他依赖 特点是服务端主动给客户端推送消息 单向 适合浏览器端只做数据接收 而webso
  • 华为OD机试真题-路灯照明问题-2023年OD统一考试(B卷)

    题目描述 在一条笔直的公路上安装了N个路灯 从位置0开始安装 路灯之间间距固定为100米 每个路灯都有自己的照明半径 请计算第一个路灯和最后一个路灯之间 无法照明的区间的长度和 输入描述 第一行为一个数N 表示路灯个数 1 lt N lt
  • Pysot训练自己的数据集

    数据集预处理操作 Pysot训练自己数据集前的预处理 Vesper0412的博客 CSDN博客 Pysot源码地址 https github com STVIR pysot 1 linux系统激活环境 conda activate pyto
  • 机器学习课程学习阶段总结

    机器学习课程学习阶段总结 线性回归 逻辑回归 逻辑回归 是一种分类算法 和之前的线性回归不是同一类问题 但是对于处理问题上有相同的思想 对于线性回归问题 有较容易理解的思路 首先指定一个形式确定的 h x Tx h theta x thet
  • 笔记本连接RK61键机械键盘非损坏的win和alt对调,数字键失灵以及特殊字母键失灵恢复

    1 问题描述 在打游戏或者码字的时候 无意中按下了键盘模式切换按键 导致了键盘的假性失灵状态 具体表现为 1 win和alt键功能对调 win按键无反应 alt键出现windows窗口 虽然不影响使用 但是很别扭 2 数字键失灵 键盘打不出
  • 网络安全有哪些经典笑话

    今天程序员同事发了一个链接给我 点开是一个调侃程序员有哪些经典笑话的帖子 给我看乐了 诸如 老婆给当程序员的老公打电话 下班顺路买一斤包子带回来 如果看到卖西瓜的 就买一个 当晚 程序员老公手捧一个包子进了家门 老婆怒道 你怎么就买了一个包
  • Android BLE 快速开发示例

    目录 概述 1 FastBle的使用 2 BLE开发实践方面的理解 3 FastBle源码解析 概述 思来想去 还是写这篇博文 记录一下 当时学习BLE的一些心得 重捡回当前Android知识 想深入了解蓝牙通讯知识 这个案例是非常不错的选
  • 毕业设计 - 基于单片机的测谎仪

    文章目录 1 简介 2 实现原理 3 主要器件 4 实现效果 正常情况 未说谎 异常情况 说谎了 5 部分实现代码 6 最后 1 简介 Hi 大家好 学长今天向大家介绍一个有趣的单片项目 基于单片机的测谎仪 大家可用于 课程设计 或 毕业设
  • 大数据技术(林子雨版)——期末复习知识点

    gt 大数据 云计算 大数据时代的三次信息化浪潮 时间 标志 解决的问题 代表企业 1980年前后 个人计算机 信息处理 Intel IBM 1995年前后 互联网 信息传输 谷歌 腾讯 2010年前后 大数据 云计算 物联网 信息爆炸 亚
  • Windows “Win+R“命令行运行常用命令

    Windows Win R 命令行运行常用命令 Windows操作系统提供了许多方便的方式来执行各种任务 其中之一是使用 Win R 运行命令行 这个快捷键组合可以让您迅速启动各种应用程序 工具和系统实用程序 而无需通过开始菜单或桌面快捷方
  • 【仲裁器】轮询仲裁round-robin,rr

    起因 在多主单从的设计中 当多个源端同时发起传输请求时 需要仲裁器根据优先级来判断响应哪一个源端 轮询仲裁 各个源端优先级相同 当其同时发起请求时 依次进行响应 电路图 代码 module rr arb input clk input rs
  • 区块链(二)-私有链的搭建

    私有链 搭建私有链 首先需要写一个创世块文件 创世块就是我自己链上的第一个区块 config nonce 0x0000000000000042 mixhash 0x00000000000000000000000000000000000000
  • 简单介绍Hyperledger fabric是什么

    Hyperledger Fabric作为超级账本的项目之一 目前基于它开发的区块链项目非常多 Linux基金会于2015年成立超级账本 以推进跨行业的区块链技术 相对于申报一个区块链标准 它鼓励通过社区合作的方式来发展区块链技术 带着知识产
  • 论git中使用https和ssh协议的区别

    论git中使用https和ssh协议的区别 SHELDON CUI S BLOG 2017 09 08 git https ssh 心得 http好还是ssh好 git可以使用四种主要的协议来传输资料 本地协议 Local HTTP 协议