git添加ssh-key后仍需要输入用户名和密码的解决办法

Submitted by dravenk on Fri, 02/24/2017 - 16:42

由于使用git的时间不常,所以很多时候都在挖坑!

  • 本地环境:Centos7(GUI)
  • 终端:tty

原因是push一份资料到github上的时候需要验证用户名和密码,很明显不是使用ssh-keys验证,

cat ~/.ssh/id_rsa.pub

然后在 https://github.com/settings/keys 添加了ssh-key 但是仍不起作用,个 git push 内容如下

fatal: 'git@github.com/drakven/workbook.git' does not appear to be a git repositoryfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.

看回官方的帮助文档,无奈英文差,了解到大概是git的时候需要使用一个连接工具,按着bash敲一遍

sudo yum install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

验证sh-key是否生效的测试 ssh -T git@github.com 返回的值是

Hi drakven! You've successfully authenticated, but GitHub does not provide shell access.git pushUsername for 'https://github.com':

原因为我bash git clone使用的是https而不是ssh

git remote remove origin
git remote add origin git@github.com:drakven/workbook.git

之后你还需要重新设置track branch,比如:

git branch --set-upstream-to=origin/master master

在进行git push之后就可以了, 对于HTTPS方式,你可以在~/.netrc文件里设定用户名密码,不过这样的风险在于密码是明文存放在这个文件里的,比较容易泄露

machine github.com
login Username
password Password

参考资料:

  • https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/
  • http://blog.csdn.net/baidu_35085676/article/details/53456884
  • https://segmentfault.com/q/1010000000599327