git中HPPTS和SSH协议区别和使用

1、HTTPS协议和SSH协议的区别

git中最常用的传输的协议是HTTPS()协议和SSH协议

1-1、优缺点

HTTPS:

  • 一般使用443端口;
  • 速度相对快点;
  • 通过用户名/密码授权,可用性比较高;

SSH:

  • 一般使用22端口;
  • 传输相对慢点;
  • 现在本地生成的SSH密钥对,再把公钥上传到服务器;

一般的防火墙会打开80和443两个https协议端口 ,一般企业防火墙会打开80和443这两个http/https协议的端口,因此在架设了企业防火墙的时候使用http就可以很好的绕开安全限制使用git了,很方便;而对于ssh来说,企业防火墙很可能没打开22端口。

1-2、使用区别

clone项目:

  • 使用https协议:首次需要在本地电脑上生成ssh密钥对,然后上传服务器(github或者gitee);
  • 使用ssh协议:可以直接克隆下来;

push项目:

  • 使用https协议:首次push代码,会弹出git授权凭据管理器的窗口,授权后以后提交就不需要其他操作,直接git push;
  • 使用ssh协议:首次需要在本地电脑上生成ssh密钥对,然后上传服务器(github或者gitee);
    git授权管理器

总结:

HTTPS利于匿名访问,适合开源项目,可以方便被别人克隆和读取(但没有push权限);

SSH不利于匿名访问,比较适合内部项目,只要配置了SSH公钥极可自由实现clone和push操作。

2、HTTPS协议的使用:

2-1、所用到的场景

1、git clone < url >
2、git remote add <重命名> < url >

  • git clone :是整个复制远程代码库,不用git init操作,也不用git remote add命令去添加本地库与远程库的连接;

在这里插入图片描述
(clone下来默认远程仓库名origin)

  • git remote add命令是在本地用git init命令初始化一个空的本地库,这个本地库改动的文件如果要push到远程仓库,那就要先运行git remote add命令先添加本地与远程库的连接;

  • git pull:
  • git push:第一次push,会弹出让登录github账号,然后授权git凭据管理器的操作;后面的提交就不用做其他操作了;
  • 授权git凭据管理器

2-2、HTTPS协议保存凭证信息:

HTTPS协议在第一次操作的时候会弹出登录github账号和授权git凭证管理器的操作,然后后续的操作就无需每次都授权了,这是因为在本地电脑上面保存了授权的信息:
1、win+r 输入control快捷打开控制面板
2、用户账户
3、凭证管理器
4、windows凭证
可以看到git:https://github.com,打开详细信息还可以编辑,要是github的密码有修改,可以修改这里,免得授权失败;

在这里插入图片描述

3、SSH协议的使用:

2-1、配置git的ssh密钥:

2-1-1、设置用户名和邮箱

配置用户名和邮箱,配置这个用户名是用来标识是哪个用户提交代码的,所以是必须设置的一个步骤:

git config user.name 用户名(不能是中文)
git config user.email 邮箱地址
=====(加–global 表示的是配置全局,即本机)
git config --global user.name 用户名(不能用中文)
git config --global user.email 邮箱地址

如上命令所示,正常配置都是配置–global即全局,否则配置的用户签名仅作用于本项目,存在当前项目的​./.git/config ​文件中,下一个项目就没有用户签名了;

2-1-2、生成密钥:

命令:

ssh-keygen -t rsa -C <配置用户签名和邮箱中的邮箱名>

在这里插入图片描述
输入设置好的用户签名的邮箱运行,然后回车三下(这里不设置密码,直接回车就行)

复制本地生成的公钥:
生成的私钥和公钥在C:\Users\ZCQ.ssh目录下,在bash中cd ~/.ssh 去查看公钥,复制到服务器中
在这里插入图片描述

2-1-3、将密钥的公钥配置到git服务器上面

复制到服务器:
1、登录到github
2、点击头像,选择settings
3、选SSH and GPG keys -> New SSH key
4、 分别填好title和粘贴~/.ssh/di_rsa.pub中内容
在这里插入图片描述
在这里插入图片描述
完成,接下来就可以用ssh协议本地与远程库链接

验证一下:

在这里插入图片描述
提示了this key is not known by any other names…
在这里插入图片描述
问题是在~/.ssh文件夹中没有known_hosts和known_hosts.old
这两个文件,
解决: 在后续直接输入yes,自己会创建这两个文件,且后面再执行git clone不会再出现这个问题;
在这里插入图片描述

2-2、所用到的场景

1、git clone
2、git remote add <重命名>


  • git clone
  • git remote add
  • git pull
  • git push

注:第一次推送需要本地生成ssh密钥,在服务器上添加;后面可以直接推送到远程仓库;这一点和https操作不同,其他都一样;

猜你喜欢

转载自blog.csdn.net/weixin_42640280/article/details/127146296