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指令上传代码了

  • 相关阅读:
    弗尤博客(二)
    弗尤博客(一)
    第一系列完
    C# 关闭子窗体释放子窗体对象问题
    C#设置IE代理
    C# 计算位置居中
    C# 绘图
    From传值
    pictureBox绑定Base64字符串
    C# 绘制圆角矩形
  • 原文地址:https://www.cnblogs.com/masteryellow/p/8746232.html
Copyright © 2011-2022 走看看