前言
Git有两种远程仓库与本地仓库之间push/clone/pull 等操作的验证模式,一种是HTTPS,另一种是SSH模式,这次我主要记录比较两种的区别。
第一种,HTTPS协议模式
相对于 SSH
模式,HTTPS对于新手来说更友好,假设我要clone一个项目,直接在clone
后跟上链接即可:
1 | git clone https://github.com/qianfanguojin/compare.git |
但是,方便的同时也会产生一些麻烦,当我们在进行push/pul
l操作时,每次都要输入账号密码,当然,很多时候我们好像就是只输入了一次,后面也不需要输入了,但其实只是Windows操作系统帮我们记录在了Windows凭据中,每次我们执行操作的时候,Windows都自动帮你填写好账号密码:
此时我们执行 push
操作,可以看到:
没有提示输入账号密码,直接推送成功。
但当我删除Windows凭据中的内容:
我再次执行推送,发现弹出输入账号密码的输入窗口:
想要了解更多关于Git 凭据的信息可以参考官方文档 Git 工具 - 凭证存储
综上,我们可知,HTTPS方式在Git执行操作时每次都要账号密码验证,但是得益于凭据管理模式,使用起来也方便许多,但当我们在多台电脑上运行操作我们的项目时,每次都要输入账号密码,就会非常的麻烦。
第二种,SSH协议模式
根据Git的官方文档 服务器上的 Git - 协议 ,SSH在Git中的使用具有架设简单、高效、方便管理优点,但SSH的缺点在于你不能通过它进行匿名访问,即便是只要读取数据,使用者也要有通过 SSH 访问你的主机的权限,这使得 SSH 协议不利于开源的项目。
这里我教大家如何使用SSH
来操作。
1.确认自己电脑是否拥有SSH密钥:
1 | cd ~/.ssh |
默认情况下,用户的SSH密钥都存储在~/.ssh
目录下,也就是用户根目录下的.ssh
文件夹中,我们需要寻找一对以 id_dsa
或 id_rsa
命名的文件,其中一个带有 .pub
扩展名。 .pub
文件是你的公钥,另一个则是私钥。 如果找不到这样的文件(或者根本没有 .ssh
目录)No such file or directory
表示文件夹不存在,则表示没有密钥,我们需要自己创建。
2.生成SSH密钥
在命令行下(cmd 或是 Git bash)我们可以通过 ssh-keygen
命令创建:
1 | ssh-keygen |
当然,为了使生成的SSH密钥更清楚明了,还可以添加一些附加控制命令
1 | ssh-keygen -t rsa -C "你的email地址" |
其中:
-t 指明密钥类型,默认为rsa,可省略。
-c 指明注释文字,如邮箱,会显示在你生成的 id_rsa
文件内容最下方。
-f 指定密钥文件存储的文件名字
可以看到,我们使用不带任何参数方法创建时,首先 ssh-keygen
会确认密钥的存储位置,如你没有指定,则它使用默认的目录(默认是 .ssh/id_rsa
),然后它会要求你输入两次密钥口令,口令的作用即是一个密码,即当你push文件使用密钥时需要输入密码,如果你不想在使用密钥时输入口令,将其留空即可。
3.将SSH密钥添加到服务器
不同的Git服务器添加操作区域不一样,这里我以Github为例。
点击右上角个人头像,从下拉框中进入Setting:
然后进入SSH and GPG Keys设置:
然后按照下图操作:
4.利用SSH密钥推送
由于我们先前使用的远程关联方式的是HTTPS链接,所以我们先将远程关联信息删除。
1 | git remote remove origin |
然后添加SSH链接的远程关联信息
1 | git remote add origin "你的远程仓库SSH链接" |
将master本地分支推送到远程默认分支
1 | git push --set-upstream origin master |
参考链接:
https://blog.csdn.net/duzilonglove/article/details/79415628
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!