Git SSH Key使用总结

最近频繁使用SSH Key,所以写一篇文章做个小结

Clone with SSH or HTTPS

首先我们知道,在GitHub上使用git clone时,有两种方式,一个是SSH,一个是HTTPS。那么这两者有什么区别呢?

  • 使用HTTPS clone对初学者来说会比较方便,因为只需要复制HTTPS URL然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这就是HTTPS方式的麻烦之处。
  • 使用SSH clone需要在克隆之前先配置和添加好SSH key。也就是说,如果你想要使用SSH clone的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。

如果你没有配置SSH Key就通过ssh使用git clone命令,那么你会看到一下提示:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

所以需要生成SSH key并且在github中设置才可以顺利使用SSH clone

查看你的电脑是否已经生成了SSH key

在git bash中执行以下命令

$ cd ~/.ssh     // 进入根目录下的ssh文件夹
$ ls                    // 查看目录下文件

如果没有密钥则不会有ssh文件夹,有则备份删除

如果目录下存在id_rsaid_rsa.pub则说明已经存在SSH密钥

生成SSH密钥

那么如果不存在,则需要我们配置生成SSH key

$ ssh-keygen -t rsa -C "guoxu@bupt.edu.cn"

之后的三个提示直接默认回车就好,接着你会看到

Your identification has been saved in /c/Users/GuoXu/.ssh/id_rsa.
Your public key has been saved in /c/Users/GuoXu/.ssh/id_rsa.pub.

也就是得到id_rsaid_rsa.pub,并且之前的路径就是你的SSH密钥的位置

还会提示Key fingerprintkey's randomart image(这里不是本文重点,有兴趣的小伙伴可以自己研究一下)。

以上说明你的SSH密钥已经成功生成。

配置SSH Key

最后你可以使用命令cat ~/.ssh/id_rsa.pub来查看你的SSH Key,并且将它复制到github的SSH key页面中即可。