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