#前言: 当我在本地工作区添加远程库的时候,用的是https方式进行连接,这样就导致每次将本地库push到远程库的时候需要进行繁琐的GitHub账号密码验证。
本文记录了我解决该问题的过程,包括遇到的问题以及解决方案。
#解决方案 在GitHub创建一个repository之后,根据提示进行连接设置,先要确定的是要选择SSH,在本地用终端进入GitRepository目录输入给出的命令
我在终端输入第一行命令后,什么也没有发生,对的,Unix经典语录:“没有消息就是好消息”,接着输入第二行命令,出现错误提示:
➜ GitRepository git:(master) git remote add origin git@github.com/isLeeTender/GitRepository.git
➜ GitRepository git:(master) git pull origin master
fatal: 'git@github.com/isLeeTender/GitRepository.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
错误信息说,这个所push的远程库似乎不存在,或者是远程库有正确的访问权限,我们可以确定的是远程库是存在的,所以只剩访问权限的问题。
OK,我们通过命令看看本地是否有权限访问目标
➜ GitRepository git:(master) ssh -T git@github.com
Permission denied (publickey).
提示说的很清楚了:“没有权限”
通过查阅资料,知道这本地生成的SSH秘钥没有添加到远端GitHub上,我打开用户目录的.ssh目录(如果没有这个目录,请继续我下面的操作),发现里面并没有生成的秘钥:也就是没有id_rsa
和id_rsa.pub
两个文件:
➜ ~ cd .ssh
➜ .ssh ls
github_rsa github_rsa.pub known_hosts
接下来通过命令生成秘钥:
ssh-keygen -t rsa -C "(你的邮箱)"
然后一直回车,直到出现火星文,秘钥就生成成功,回到.ssh目录里,发现里面已经有了id_rsa
和id_rsa.pub
两个文件:
➜ ~ cd .ssh
➜ .ssh ls
github_rsa github_rsa.pub id_rsa id_rsa.pub known_hosts
接着就是将秘钥添加到GitHub上
标题自己定,秘钥的内容则是.ssh目录下的id_rsa.pub
文件里面的内容,通过cat id_rsa.pub
命令就可以看到:
➜ .ssh cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDpaZgqTFqoa3lhPxa6w5PSQnh9Rj9wQ3+pR/l2uts6LKPYcxBno6U8oZ+NMn7j5Q8L96NrrdST7cPSWLhhQ7+3M4woMmbCbP
...
然后拷贝下来,复制到Key的位置就可以了
接下来我们再通过ssh -T git@github.com
查看是否够权限:
OK!
我们来push试一下:
大功告成!接下来的push操作都不需要在输入账号密码。
#总结 通过ssh秘钥连接远程仓库的正确顺序是: 1、GitHub创建远程库 2、本地创建秘钥 3、将秘钥添加到GitHub 4、连接远程库 5、提交操作