SSH Key简介
Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以首先我们要创建ssh以及完成一些操作。
一些问题:
一台电脑只需要一个 SSH key
一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上。
如果你利用多台电脑进行办公操作,可以将每台电脑设置的key都上传到GitHub上
如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key。
SSH Key 操作
1. SSH Key创建 ssh-keygen
$ ssh-keygen -t rsa -C “youremail@example.com”
-t:指定要创建的密钥类型。这里使用RSA加密方式。
-C:用于为指定注释,通常使用自己的邮件名作为注释。
-b 2048:指定密钥长度 (1024的密钥长度能够被破解,建议指定为2048或4096)。
更多选项可见SSH key的介绍与在Git中的使用
回车之后,要求填写.ssh的存放位置,密码等,这边直接全部回车。结果如下:

2. 查看SSH Key
查看.ssh目录(注意.ssh是隐藏文件)
ll ~/.ssh
查看id_rsa.pub,并复制结果代码,这个就是SSH Key
$ cat ~/.ssh/id_rsa.pub
3. GitHub添加SSH
请提前注册GitHub账户,登录后找到GitHub主页右上角,点击setting:

进入设置页面,左边导航栏中点击 SSH and GPG keys,之后点击右边绿色按钮new SSH key
进入后title可以根据自己情况设置,下方key栏中粘贴之前复制的id_rsa.pub内容。
完成在GitHub账户中添加本地的SSH
4. 连接GitHub
$ ssh -T git@github.com
当你第一次连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了,这个警告只会出现一次,后面的操作就不会有任何警告了
成功连接结果如下,

如果显示Permission denied (publickey). 就说明你失败了。请重新从第一步设置。
将本地git上传至GitHub
1.添加远程库
登录后,在GitHub主页在右上角找到“Create a new repo”按钮,创建一个新的仓库。
填入仓库名(我的仓库名为test-collect)之后,按照默认设置直接创建。
添加远程库,名字设置为origin,添加进入刚刚创建的test-collect仓库
git remote add origin git@github.com:username/test-collect.git
冒号后面为你的GitHub用户名/仓库名.git
#如果需要删除远程库origin:
$ git remote rm origin
2.本地库的所有内容推送到远程库上
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push -u origin master
结果如下:

此时我们发现GitHub上的内容与本地库一致了。
从现在起,只要本地进行提交,就可以通过命令:
$ git push origin master
参考文献
- https://www.liaoxuefeng.com/wiki/896043488029600/896954117292416
- https://segmentfault.com/a/1190000013759207
- https://www.jianshu.com/p/1246cfdbe460