在将本地仓库的代码推送到远程仓库时,出现下面报错。
$ git push -u origin master
The authenticity of host 'gitee.com (212.64.63.190)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,212.64.63.190' (ECDSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
一、报错分析
报错一直围绕着一个主题,就是公钥没有权限,请检查是否有访问权限以及仓库是否存在。有两种可能:
-
客户端或服务端未生成 ssh key
-
客户端与服务端的ssh key不匹配
那么解决问题的方法就是重新生成ssh key,然后在远程仓库设置下公钥即可。
二、解决方法
1、进入命令行界面,输入ssh-keygen -t rsa -C “你的邮箱地址”,回车。
ssh-keygen -t rsa -C "youremail@example.com"
中途会让你输入密码之类的,不用管,直接一路回车。
2、打开目录C:\Users\用户名\.ssh
,用记事本打开文件id_rsa.pub,复制里面的所有内容。
3、在Web端登录远程仓库(Gitee/Github),点击设置——>安全设置——>SSH公钥。粘贴刚刚复制的公钥,然后点击确定。
4、输入密码进行安全验证。
5、输入ssh -t git@gitee.com
验证是否连接成功,出现以下提示信息即可。
6、再次push本地仓库的代码,成功push。如果还不行,可以重新创建远程仓库(不要生成README文件),再次提交。
ssh访问方式要比https访问方式繁琐,经常要重新生成公钥再配置,所以还是建议https。