【git】git中使用https和ssh协议的区别以及它们的用法
git可以使用四种主要的协议来传输资料: 本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 git 协议。其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常用,而git协议由于缺乏授权机制且较难架设所以也不常用。
最常用的便是SSH和HTTP(S)协议。git关联远程仓库可以使用http协议或者ssh协议。
【特点/优缺点】
ssh:
- 一般使用22端口;
- 通过先在本地生成SSH密钥对再把公钥上传到服务器;
- 速度相较慢点
https:
- 一般使用443端口;
- 通过用户名/密码授权,可用性比较高;
- 速度相较快点
一般企业防火墙会打开80和443这两个http/https协议的端口,因此在架设了企业防火墙的时候使用http就可以很好的绕开安全限制使用git了,很方便;而对于ssh来说,企业防火墙很可能没打开22端口。
【使用区别】
clone项目:
使用ssh方式时,需要配置ssh key,即要将生成的SSH密钥对的公钥上传至服务器;
使用http方式时,没有要求,可以直接克隆下来。
push项目:
使用ssh方式时,不需要验证用户名和密码,之前配置过ssh key,(如果你没设置密码)直接push即可;
使用http方式时,需要验证用户名和密码。
总结:
HTTPS利于匿名访问,适合开源项目,可以方便被别人克隆和读取(但没有push权限);
SSH不利于匿名访问,比较适合内部项目,只要配置了SSH公钥极可自由实现clone和push操作。
【github上切换SSH/HTTP方式】
【如何生成SSH密钥】
1、设置git的user name和user email
git config --global user.name 'yourname'
git config --global user.email 'youremail'
// 如果之前已经设置了 那就不要加后面的yourname/youremail 直接获取即可
2、生成SSH密钥
输入指令:ssh-keygen -t rsa -C “youremail”;
按回车即表示默认这个文件路径名,接着又会提示你输入两次密码(该密码是你push文件的时候要输入的密码,而不是github管理者的密码),当然,你也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了。
即按三次回车后,就成功生成了id_rsa 和 id_rsa.pub 两个文件。
打开id_rsa.pub,将内容复制到github中,路径:Settings - SSH and GPG keys - New SSH Key
添加成功后,github就可以识别你的机器,允许你从github拉取上传代码了。
【http如何保存凭证信息】
HTTPS认证方式虽然需要输入账户密码,但现在也不需要每次都输入。这个凭据保存需要依赖一个凭据管理器,每个操作系统平台都有自己的凭据管理器。
当我们在使用http协议push之后,账号和密码会自动保存至凭据管理器中(如果有的话),之后就不需要每次push的时候都输入了。
当保存了密码后又想要修改密码或者删除密码怎么办?
window上的git的密码是交给window进行管理的,我们可以进入‘控制面板’ - ‘用户账户’ - ‘凭证管理器’ - ‘管理Window凭据’:
打开后你就会发现:
【参考文章】
问题解决:Permission denied(publickey)
【git】git中使用https和ssh协议的区别以及它们的用法的更多相关文章
- Git使用手册:HTTPS和SSH方式的区别和使用
在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地.这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制htt ...
- git新克隆代码的时候ssh协议
- tomcat中AJP协议和HTTP协议的区别
tomcat的server.xml中的AJP和HTTP连接器区别 HTTP协议:连接器监听8080端口,负责建立HTTP连接.在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器. ...
- Git:SSH、SSH与HTTP区别、git常用命令
SSH1.首先需要检查你电脑是否已经有 SSH key cd ~/.sshls12.ssh表示ssh文件是个隐藏文件查看是否存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在 ...
- Java 实现 SSH 协议的客户端登录认证方式--转载
背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...
- git中https和SSH
1.在git中clone项目有两种方式:HTTPS和SSH,它们的区别如下: HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码: SSH:clone的项目你必须 ...
- Git认证方式https和ssh的原理及比较
常见的代码托管平台GitHub.GitLab和BitBucket等,基本都会使用Git作为版本控制工具.平台一般都提供两种认证方式https和ssh.了解该过程能够更加自由的配置和使用,本文就来简单聊 ...
- 【C#】教你纯手工用C#实现SSH协议作为GIT服务端
SSH(Secure Shell)是一种工作在应用层和传输层上的安全协议,能在非安全通道上建立安全通道.提供身份认证.密钥更新.数据校验.通道复用等功能,同时具有良好的可扩展性.本文从SSH的架构开始 ...
- CENTOS下搭建git代码仓库 ssh协议
centos服务器下搭建git仓库,使用ssh协议管理仓库代码权限 git官网(http://git-scm.com/) 使用ssh协议: 一.安装git,使用yum install git 或 ...
随机推荐
- 2.2注册中心:Eureka
pom.xml配置 <?xml version="1.0" encoding="UTF-8"?><project xmlns="ht ...
- Redis获得bigkey扫描脚本
众所周知,redis里面的大key存在是非常危险的一件事情.因为最近的工作转移到中间件相关的工作,因此关注了一下bigkey的扫描方法.首先介绍一下阿里云提供的扫描脚本:具体可见:https://yq ...
- PHP获取指定时间的前6个月月份 、获取前6天日期
//获取前6个月月份 public function to_sex_month(){ $today = input('param.today') ? input('param.today') : da ...
- Java并发(思维导图)【待评估、删除】
1, 2, 3,常用函数 Semaphore import java.util.concurrent.Semaphore;Semaphore name=new Semaphore(n); name.a ...
- 又谈F分布
今天看到一篇不错的博文,有感,记录下来,相对来说讲到了本质,也很容易理解.https://www.cnblogs.com/think-and-do/p/6509239.html 首先,老生常谈,还是那 ...
- chartjs显示数值标签插件:chartjs-plugin-datalabels
Getting Started #Installation #npm npm install chartjs-plugin-datalabels --save This plugin can al ...
- connect() failed (111: Connection refused) while connecting to upstream的解决
遇到这种情况, 首先 1.检查php-fpm是否启动---------如果没启动->启动, 2.用命令 netstat -ant | grep 9000 查看php-fpm进程,如果没启动-&g ...
- NOIP2009-2018简要题解
口胡警告 NOIP2009 潜伏者 模拟 Hankson 的趣味题 对四个数\(a_0,a_1,b_0,b_1\)分解质因数,结果序列分别记为\(\{p1^{b1}\},\{p2^{b2}\},\{p ...
- el表达式获取url中携带的参数
使用JSTL时,URL会被隐含的对象param包裹起来,使用param.变量名,直接获取值 <body>hello:${param.name}</body> 在使用jquery ...
- MSP432 BSL流程(UART)
升级流程 PC程序会解析脚本中的命令,根据命令码做相应的操作.数据来自于命令后的文件(当前目录下的数据文件) # cat script_P4xx_uart.txt LOG //记录日志 MODE P4 ...