作为一个编程小白,软件小白。这几天在写毕业论文。打算把写的东西记录在gihub上,但是今年莫名的发现每次从当地向远端push的时候总是报错permission denied (publickey);结果花费了一个下午才解决。这也促使我写下自己痛苦的经历,以期能够帮助后来的和我一样小白的。
首先也是各种百度,然后知道原因:就是有https模式转到ssh模式时候这种问题就会出来了。网上大多数人也是出现这种问题。因为https模式下每次git push都要输入账号和密码是在是麻烦。
解决的方法是:因为我已经有了公钥,没有的话看git教程会有如何生成公钥的方法的。我的问题是:改自己的公钥(public key),我不知道为什么会出现公钥不对的问题。
查看是否已经有了
ssh
密钥:
cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
生成密钥:
ssh-keygen -t rsa -C
“
xxxxx@gmail.com
”
1:查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除(这个必须把这文件完全删掉)备注:作为一个沉痛的教训就是我一直没有删掉这个文件,每次都是这么overwrite的生成key,结果每次都是白忙活
2:生成密钥: ssh-keygen -t rsa -C “xxxxx@gmail.com” ""里的是自己的邮箱,三次回车,密码为空
3:最后得到了两个文件:id_rsa和id_rsa.pub 添加密钥到ssh:进入你的github,需要之前输入密码. 在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
4: 打开https://github.com/
最后得到了两个文件:
id_rsa
和
id_rsa.pub
添加密钥到
ssh
:进入你的
github,
需要之前输入密码
.
在
github
上添加
ssh
密钥,这要添加的是“
id_rsa.pub
”里面的公钥。
打开
https://github.com/
在设置中添加密钥
把
id_rsa.pub
用记事本打开之后复制里面的到网站上就可以了。
在设置中添加密钥 把id_rsa.pub用记事本打开之后复制里面的到网站上就可以了。需要注意的是以前的ssh密钥要删除5:之后在terminal输入:ssh git@github.com,这里需要注意的是,输入的就是这一句话,后面的不是自己的邮箱,最需要注意的是,如果是从一些别的地方copy的话,注意ssh后面只有一个空格,多一个都会出错的
6:
中间的是否确定继续连接,输入yes就ok
7:然后再次git push就可以了。
其实中间的所有过程在网上差不多都能download到,但是我还是费了好几个小时,主要就是一些小的细节上出错。写下来也算是希望后来人不要和我一样在这方面出错。
不过还是不懂为啥https到ssh的转换就会导致git push出错,然后非要这么麻烦的重新设置一下ssh密钥才能解决。不知道是不知自己知识欠缺,其实是用了一个麻烦的方法。不管怎样,至少现在是能够push了。
另:有时候远端有修改的话,是需要先pull一下,然后才能git push -u origin master的。当然这个origin完全可以是你设置的任何名字
祝好啦!
莫名的昨天又不能git push了,然后如此的反复折腾半天后也没有什么结果。然后生成ssh key时,使用
ssh-keygen -t rsa 后面不加邮箱,再把得到的id_rsa.pub加入到github的ssh里就好了。
不过还是没搞懂为啥莫名的我的ssh key就不能使用了,还有就是之前为啥window下的git shell我生成ssh key时可以加邮箱。
以后有时间再认真想这个问题吧
-----------------------------一个小白的不能小白的小白