git clone,用https还是ssh

前言
在使用Git去克隆项目时,会遇到https和ssh等形式,这两种又有何种区别呢,本文将重点讨论在具体使用中的问题。
:第一次使用Git 时,需要先设置全局用户名和邮箱,否则后续使用命令时会报错,也是提醒先添加信息,这个的意义就是在提交时知道是谁提交的
在这里插入图片描述

HTTPS

HTTPS(全称为Hypertext Transfer Protocol Secure)是一种用于安全通信的网络协议,是HTTP(超文本传输协议)的安全版本。它在HTTP的基础上通过SSL/TLS(安全套接层/传输层安全性)协议提供了数据加密、数据完整性验证和身份验证机制。
特点: git clone 和 git pull 无限制,git push 需要提供用户名和密码

token密码

git push后要求输入用户名和密码,来验证是谁来往这个项目提交
在这里插入图片描述
点击“Cancel”后,就把输入界面改到终端了:
1
❗️❗️❗️这里的用户名就是全局中存储的用户名,但是密码不是那个邮箱了,尝试后会有如下报错信息❌❌❌。在这里插入图片描述
原因:自2021年8月13日起,GitHub不再支持密码认证,转而要求使用个人访问令牌。需要在GitHub生成token作为密码。
解决方案:Git:Support for password authentication was removed on August 13, 2021. Please use a personal

credential.helper免密登录

在这里插入图片描述❗️❗️❗️生成token并输入成功push后,再次push发现还是得输入,这就是https类型的弊端,每次push都需要进行验证😟😟😟>解决方案:credential.helper存储密码,这样在第一次输入信息后可以记录下来,之后直接调用不用手输了。

  • 检查当前credential.helper配置
    git config -l|grep credential.helper
    在这里插入图片描述
    这种就是未配置情况,每次push需要登录验证。
  • Windows下manager凭证存储模式
    在Windows环境下,下载使用git时,git会自动安装一个叫做“ Git Credential Manager”的辅助工具,设置模式为manager,记录第一次登录的信息并保存到凭据管理器中。
    在这里插入图片描述

没有可以手动设置:git config --global credential.helper manager,如下图所示⬇️
在这里插入图片描述
这个模式下,第一次push会出现下图的登录界面⬇️,可以选择浏览器登录或者token
在这里插入图片描述
token方法正常,之后会在控制面板/用户账户/凭据管理器生成一个凭据⬇️,但是浏览器那个界面打不开,不过×掉后也会出现一个凭证
在这里插入图片描述

  • cache暂存模式
    该模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,
    • 默认15分钟:
      git config --global credential.helper cache
      git config credential.helper cache
    • 自己设置时间:
      git config credential.helper 'cache --timeout=3600'这样就设置一个小时之后失效
  • store模式长期存储密码
    git config --global credential.helper store(全局)
    该模式下会将凭证用明文的形式存放在磁盘中,并且永不过期,如下图所示⬇️。
    在这里插入图片描述
  • 取消存储密码,适用于各模式
    git config --global --unset credential.helper(全局)
    git config --unset credential.helper(局部)

❗️❗️❗️因为之前设置的token过期失效,密码存储(这里也包括manager模式,不过它报错会自动删除原有凭据,并在下一次push时再次要求输入新token)的是过期的token密码,当更新完token后,再push就会出现如下密码不对的报错情况❌❌❌
在这里插入图片描述
取消密码存储并重新输入新的token密码后就可以push啦。
在这里插入图片描述

从上述操作可以看出https的验证比较麻烦😞😞😞,这就有了ssh的便捷操作⬇️⬇️⬇️。

SSH

SSH(全称为Secure Shell)也是一种网络协议,用于加密方式远程登录到服务器,以及其他网络服务的安全传输,SSH使用公钥加密技术来加密所有传输的数据,保护数据不被窃听。

特点: 在托管平台上设置 ssh public key,git push 时无需输入用户名和密码验证
具体操作参考下列两个博客,具体克隆方法不再赘述,换成ssh链接即可:
✨✨✨SSH公钥秘钥git
⭐️GitHub、Gitee、Gitlab共用一个SSH密钥配置
在这里插入图片描述

### 回答1: git clone httpsssh 的区别在于传输协议不同。https 使用的是加密的 HTTP 协议,而 ssh 使用的是加密的 SSH 协议。在使用 https 时需要输入用户名和密码进行身份验证,而使用 ssh 时需要设置公钥和私钥进行身份验证。另外,使用 ssh 可以更方便地进行代码的推送和拉取,而使用 https 则需要输入用户名和密码。 ### 回答2: Git是一种版本控制工具,可以帮助开发者管理代码、协作开发等。在使用Git时,需要通过clone命令将代码库克隆到本地,以便进行代码的修改和提交。 在clone命令中,有两种常用的协议类型:HTTPSSSH。它们在使用上有一些不同之处,下面将详细介绍这两种协议之间的区别。 1. HTTPS协议 HTTPS协议是一种基于SSL/TLS加密的安全协议。它使用HTTP协议进行通信,但是通过SSL/TLS加密数据,防止数据被窃听或篡改。使用HTTPS协议进行Git操作需要使用用户名和密码进行身份验证。 使用HTTPS协议进行clone操作的命令为: ``` git clone https://github.com/username/repo.git ``` 其中,`username`是你的GitHub用户名,`repo`是你要克隆的代码库的名称。 2. SSH协议 SSH协议是一种加密的网络协议,可以通过加密传输数据,保证数据的安全性和完整性。使用SSH协议进行Git操作时,需要先生成SSH密钥,然后将公钥上传到GitHub上。之后,在进行Git操作时,使用ssh://协议头,并使用SSH密钥进行身份验证。 使用SSH协议进行clone操作的命令为: ``` git clone git@github.com:username/repo.git ``` 其中,`username`是你的GitHub用户名,`repo`是你要克隆的代码库的名称。 3. 区别 HTTPS协议与SSH协议之间的主要区别在于: - 安全性:SSH协议比HTTPS协议更强的安全性,因为SSH协议使用了公钥加密和私钥解密的方式进行身份验证,而且数据传输也是加密的。 - 认证方式:使用HTTPS协议需要输入密码来进行身份验证,而SSH协议则是使用SSH密钥对进行身份验证,无需输入密码。 - 速度:HTTPS协议通常比SSH协议速度更慢,因为所有数据都需要进行加密和解密,而SSH协议则无需进行加密和解密。 - 使用方便性:HTTPS协议使用方便,因为不需要生成SSH密钥对,但是SSH协议需要先生成SSH密钥对,并将公钥上传到GitHub上,在使用时还需要配置一下身份验证方式。 综上所述,HTTPS协议与SSH协议各有优缺点,使用哪种协议取决于具体的情况。如果对数据安全性要求比较高,建议使用SSH协议;如果对速度和方便性要求比较高,建议使用HTTPS协议。 ### 回答3: Git是一款开源的版本控制软件,它的使用方式非常灵活,可以通过不同的协议来访问Git仓库。其中,最常用的协议是HTTPSSSHHTTPS协议是一种基于HTTP协议的安全传输协议,在Git中使用HTTPS协议可以通过HTTPS链接克隆远程仓库到本地,使用方式为: ``` git clone https://github.com/username/repo.git ``` HTTPS协议的优点是简单易用,只需要输入用户名和密码即可完成鉴权操作。同时,在网络环境中,HTTPS协议的稳定性也相对较高,不易受到网络攻击的影响,因此适合在公共网络中使用。 然而,HTTPS协议也存在缺点。首先,在使用HTTPS协议时,每次操作都需要输入用户名和密码进行鉴权,繁琐且不利于脚本化操作。其次,HTTPS协议在传输文件时需要加密操作,会对系统性能造成一定的影响。 相比之下,SSH协议则是一种基于Secure Shell协议的安全传输协议,使用SSH协议可以通过SSH链接克隆远程仓库到本地,使用方式为: ``` git clone git@github.com:username/repo.git ``` SSH协议的优点是可以提供高度的安全性,并且在传输数据时不需要进行加密操作,因此相对于HTTPS协议更具有高效性。同时,SSH协议也支持公私钥认证方式,可以避免在每次操作时进行用户名和密码的鉴权,更加方便实用。 但是,使用SSH协议在网络环境较差的情况下容易出现连接中断等问题,也需要一定的配置和管理工作,因此相对于HTTPS协议而言更加复杂。 综上所述,Git中的HTTPSSSH协议各有优劣,需要根据具体的应用场景和需求进行选择。对于只用于个人开发或小团队协同开发的项目,使用HTTPS协议已经足够;而对于大型项目或者需要高度安全性的项目,SSH协议则更为合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值