zoukankan      html  css  js  c++  java
  • git切换账户产生push失败的问题解决

    由于在sclab2中我不慎将原有仓库删除,因此不得不重新申请账户创建新的仓库,然而进行push会出现错误提示:

    Permission denied (publickey)

    本博客是为了解决此问题的

    前置知识:

    1.

    首先我们需要了解什么是SSH,关于这部分可以参考网页:

    https://zh.wikipedia.org/zh-cn/SSH

    简单来说,SSH是一种安全协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

    有以下两种模式

    第一种级别(基于口令的安全验证):
    只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
    第二种级别(基于密匙的安全验证):
    需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

    2.

    我们知道,我们第一次在github进行推送代码时,我们需要输入账号与密码。

    但是在后来的代码上传中,并不需要此步骤,这是由于github采取了SHH密钥的形式

    在电脑中生成了唯一的SSH公钥与私钥,而github上也有一个公钥,当进行push的时候,

    git会自动匹配看你电脑上的秘钥与github上的是否是配对的,如果是配对的,则允许推送。

    问题分析:

    有了前置的知识后,并且基于错误提示:

    Permission denied (publickey)

     我们很容易就可以猜测出问题出现的原因,是由于缺少公钥引起的

    因此我们需要在github上与自己电脑上创建相同的密钥就可以解决这个问题了

    具体的解决问题方法:

    cd ~/.ssh
    ls

    打开命令行(或者git bash),可以使用如上指令查看是否有不会出现三个文件夹:

    id_rsa.pub,config,known_hosts

    如果出现如上三个文件夹,就说明本地已经有了密钥

    如果只出现了一个known_hosts文件夹,则需要生成密钥

    生成密匙的命令是:

    ssh-keygen -t rsa -C "xxxxxx@xxx.com"

    其中引号内容改为自己的邮箱

    一路回车,就可以生成密匙了

    这是会发现已经生成了id_rsa.pub

    (若是已有密匙,可以忽略以上生成步骤)

    接下来查看id_rsa.pub的内容并复制

    进入到个人github账户的settings,然后点击New SSH key,把刚刚复制的内容粘贴。

    接下来就发现可以使用

    git push指令上传代码了

  • 相关阅读:
    【WCF】服务并发中的“可重入模式”
    【.net 深呼吸】项目中是否有必要删去多余的引用
    【.net 深呼吸】细说CodeDom(10):生成异常处理语句
    【.net 深呼吸】细说CodeDom(9):动态编译
    【.net 深呼吸】细说CodeDom(8):分支与循环
    shell脚本将gbk文件转化为utf-8
    PHP判断文件大小是MB、GB、TB...
    svn: E205007: None of the environment variables SVN_EDITOR
    phpstorm yii2框架的redis和mongodb提示
    linux下phpmailer发送邮件出现SMTP ERROR: Failed to connect to server: (0)错误
  • 原文地址:https://www.cnblogs.com/masteryellow/p/8746232.html
Copyright © 2011-2022 走看看