【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凭据’:

打开后你就会发现:

 

 

【参考文章】

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

Git:SSH、SSH与HTTP区别、git常用命令

问题解决:Permission denied(publickey)

posted @ 2019-12-18 14:46  WANNANANANA  阅读(10198)  评论(0编辑  收藏  举报