问题描述:
在实操中,git push代码到github上一直提示输入用户名及密码,并且跳出的输入框输入用户名和密码后,报错找不到远程仓库
实际解决中,发现我环境有两个问题解决:
- git push一直提示输入用户名及密码
- “fatal: Could not read from remote repository”
问题1
原因:
是因为git使用https协议,每次pull, push都要输入密码,而如果采用ssh协议
(当使用了http的方式clone代码到本地,相应的,也是使用http的方式将代码push到服务器,就出现这个问题)
解决方式:
解决办法很简单,将http方式改为ssh方式即可;先移除旧的http的origin,在添加新的ssh方式的origin
改动完之后直接执行git push是无法推送代码的,需要设置一下上游要跟踪的分支,与此同时会自动执行一次git push命令,此时已经不用要求输入用户名及密码啦!git push --set-upstream origin master
但在这里碰到了我的问题2
问题2
原因:
出现这错误一般是以下两种原因:
- 客户端与服务端未生成 ssh key
- 客户端与服务端的ssh key不匹配
我的问题是不匹配,需要重新生成一次ssh key ,并重新配置一下GitHub账户即可
解决方式:
-
生成新的SSH key
如果是客户端与服务端未生成ssh key,那么直接使用:ssh-keygen -t rsa -C "youremail@example.com"
生成新的rsa密钥即可。
如果是客户端与服务端的ssh key 不匹配,此时需要先将本地生成的 id_rsa以及id_rsa.pub这两个文件【一般在用户名下的.ssh文件夹下】删除掉,然后再使用上述指令生成新的rsa密钥;
上面命令的目的是为了让本地机器ssh登录远程机器上的GitHub账户无需输入密码。 -
将SSH key 添加到 ssh-agent
使用ssh-add ~/.ssh/id_rsa
将产生的新ssh key添加到ssh-agent中:
但我出现“Could not open a connection to your authentication agent.”的错误,这个使用以下方式解决:eval "$(ssh-agent -s)"
然后再次执行 ssh-add ~/.ssh/id_rsa
指令。
3. 将SSH key 添加到你的GitHub账户
在账户选项中选择 “Settings”–>“SSH and GPG keys”–>“New SSH key”,然后打开之前新生成的id_rsa.pub文件,将密钥复制后填写到账户中【注意填写时的格式要求】
4. 验证key
使用 ssh -T git@github.com
对ssh key 进行验证:
参考:解决git push一直提示输入用户名及密码、fatal: Could not read from remote repository的问题 - 测试搬运工emma - 博客园