我们之前使用的远程仓库地址,都是 HTTPS 的。但是大家看 GitHub 网站上,除了 HTTPS 以外还有一种是 SSH,那这种地址应该怎么使用呢?咱们这一集就来聊一聊 SSH 秘钥。

如果使用 HTTPS,那么每次做一些操作,GitHub 都要求我们输入账号密码,这个就像是一个带密码锁的门,你每次进去都需要输入密码才行。

而且互联网上有些坏蛋可能会使用暴力破解,反复的猜测你的密码,所以使用密码也不是那么安全。而使用 SSH 秘钥,就是为了解决这两个问题的。

1. 秘钥的概念

我们可以在自己的电脑上,生成一对叫做秘钥的东西,其中一个是私钥,另一个是公钥。大家可以这么理解,私钥,就是你拿在手里的门禁卡。而公钥,你可以当成一扇可以刷卡进入的门。这样说了以后,大家再思考一下。

  • 私钥:你自己的门禁卡,是不是应该放在自己身上?那也就是说,私钥应该保存在自己的电脑中。
  • 公钥:而公钥呢,它是一扇可以刷卡进入的门,这扇门除了我们自己的门禁卡以外其他什么都不认。那么门应该装在哪里呢?当然是在房子上了,这里的房子指的就是 GitHub。

有了这个唯一匹配的门禁系统,那么下次你在进入房子时,也就是操作 GitHub 仓库的时候,只需要用的你门禁就可以进去了嘛,而不用每次都输入账号密码了。秘钥的知识是非常重要的,在 Linux 服务器的课程中,我们也会讲解如何使用秘钥的方式,远程连接到服务器上。

2. 生成秘钥

现在我们就来生成秘钥,方法也非常简单,直接跑命令,然后一路回车,会在你的用户家目录中成两个文件

ssh-keygen

执行命令open ~/.ssh,可以看到这一对 key

  • id_rsa 私钥
  • id_rsa.pub 公钥

用编辑器,打开 id_rsa.pub,复制公钥。

Windows 的同学,生成的秘钥在:C:/用户/你的用户名/.ssh目录中

3. 添加秘钥

点击 GitHub 网站的右上角,用户菜单的 Settings -> SSH and GPG keys -> New SSH key,然后将生成的公钥,复制进去就好了。

4. 重新 Clone

还是将之前的项目删掉,咱们再来 Clone 一次。但是不同的是,这次要使用 SSH

cd ~/Developer/Git
git clone git@github.com:clwy-cn/learn.git

然后大家再执行 push 或者其他操作的时候,它就会自动使用秘钥来验证,而不用每次都输入密码了。

5. 部署秘钥

需要注意的是,GitHub 中,除了用户的 Settings 里面有个秘钥。项目仓库这里,也有一个 Settings,点开以后,发现这里也有一个 Deploy Keys?

满是好奇心的我们,打开看看,这好像也是要咱们添加一个什么秘钥啊。

大家需要注意的是,这里确实也是用来添加秘钥的,但是和刚才的秘钥不同,这里是用来添加部署秘钥的。所谓部署秘钥,就是将服务器上生成的秘钥放在这里,而不是本地开发电脑生成的秘钥。在项目上线时候,咱们在服务器上执行git clone时会使用的秘钥。

那你想一下,服务器上需要直接修改代码,并且执行 commit 和 push 吗?当然不需要啊,服务器的作用是用来运行完善的代码,而不是用来做开发的。所以这里的部署秘钥,默认是没有写权限的,也就说不能用来做 push。

关于这个问题大家了解一下就好了,我们在 Linux 服务器的课程里,再和大家具体讲解。

以上这些这就是 SSH 秘钥的知识了。

6. 添加用户

这一节最后一个知识,来说一下,怎么添加用户。一个大中型项目,往往都是一公司的研发团队,共同协作开发的。只有添加了操作权限的用户,才能访问 GitHub 的项目仓库,才能提交代码。

操作的方式也非常简单,这次点到当前项目Settings中的Manage access,点击Invite a collaborator,输入你同事 GitHub 的用户名或者邮箱就好了。他就会收到 GitHub 的邀请邮件,当他确认后,就拥有了这个仓库的操作权限了。

如果他还想用 SSH 的方式来操作仓库,那么还需要使用刚才说的方法,把他电脑的 SSH 公钥添加到他自己 GitHub 账户中的 Settings 中。

已添加到喜欢了