为了便于访问远程仓库,各个协作者将自己的本地的项目内容推送到远程仓库中,使用
SSH keys 验证github的好处:不用每次提交代码时都输入用户名和密码。
如果SSH key没有添加到github帐号设置中,系统会报下面的错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
这时需要在本地创建SSH key,然后将生成的SSH key文件内容添加到github帐号上去。
创建SSH key的方法如下:
桌面——右键单击——Git Bash Here,执行下面命令:
ssh-keygen
接着系统会提示输入文件保存位置等信息,连续敲三次回车即可,生成的SSH key文件保存在“~/.ssh/id_rsa.pub”中,
然后用编辑工具(notepad++)打开这个id_rsa.pub 文件,拷贝这个id_rsa.pub文件的所有内容。
将它黏贴到github帐号管理中的添加SSH key界面中。
打开github帐号管理中的添加SSH key界面的步骤如下:
1. 登录github
2. 点击右上方头像,点击下拉的 settings属性
3. 选择 SSH key
4. 点击 Add SSH key / New SSH key
在出现的界面中填写SSH key的名称,可任意填一个你自己喜欢的名称即可,然后将上面拷贝的“~/.ssh/id_rsa.pub”文件内容粘帖到key一栏,在点击“add key”按钮就可以了。
添加过程github会提示你输入一次你的github密码(就是登陆密码啦)
如下所示:
接着打开git ,测试连接是否成功
$ ssh -T git@github.com
如果提示:Hi XXXX ! You've successfully authenticated, but GitHub does not provide shell access. 说明你连接成功了。(有时候反应比较慢,耐心等一下下。)
有时候会提示错误,如下所示:输入“yes”即可。
有时候,设置完ssh keys 后Push时还需要输入用户名和密码,原因是:
因为你用的是https而不是ssh。
你可以更新一下origin:
1 git remote remove origin
2 git remote add origin git@github.com:Username/Your_Repo_Name.git
之后你还需要重新设置track branch,比如:
1 git branch --set-upstream-to=origin/master master
对于HTTPS方式,你可以在~/.netrc
文件里设定用户名密码,不过这样的风险在于密码是明文存放在这个文件里的,比较容易泄露
1 machine github.com
2 login Username
3 password Password
添加完成后再次执行git clone就可以成功克隆github上的代码库了。