github如何使用SSH交换数据?

github如何使用SSH交换数据?,git,github,ssh,Git,Github,Ssh,我只了解SSH身份验证过程的一半: 我将我的公钥A交给Github Github对数据进行加密,然后将其发送给我 我是唯一一个读它的人,因为我有一个,好的私钥 现在,当我在推的时候,我没有Github的公钥B在相反的方向上执行相同的操作。。还是储存在某个地方?同样,如果它是这样工作的,如果有人想要推送东西,他只需要窃取Github链接到我帐户的公钥B“give/storage in.git”,然后推送我不想要的东西 我知道我遗漏了一些东西,所以我希望有人能用更多的细节来解释它SSH服务器(Git

我只了解SSH身份验证过程的一半:

  • 我将我的公钥A交给Github
  • Github对数据进行加密,然后将其发送给我
  • 我是唯一一个读它的人,因为我有一个,好的私钥
  • 现在,当我在推的时候,我没有Github的公钥B在相反的方向上执行相同的操作。。还是储存在某个地方?同样,如果它是这样工作的,如果有人想要推送东西,他只需要窃取Github链接到我帐户的公钥B“give/storage in.git”,然后推送我不想要的东西

    我知道我遗漏了一些东西,所以我希望有人能用更多的细节来解释它

    SSH服务器(GitHub)知道只有拥有私钥的人才能访问repo。只有那些拥有私钥的人才能解密它的消息

    所以服务器使用它。它生成一个随机数,用公钥加密,并要求客户端读取。如果他读得正确,他必须拥有私钥。

    SSH服务器(GitHub)知道只有拥有私钥的人才能访问repo。只有那些拥有私钥的人才能解密它的消息

    所以服务器使用它。它生成一个随机数,用公钥加密,并要求客户端读取。如果他读得正确,他必须拥有私钥

    现在,当我推的时候,我没有Github的公钥B在相反的方向上做同样的事情。。还是储存在某个地方

    Github.com在建立SSH连接时发送其公钥。如果您在某种UNIX上使用OpenSSH,它将存储在文件
    $HOME/.ssh/known_hosts
    中。事实上,当您第一次通过SSH连接到Github时,当您对以下提示回答“是”时,它就会到达:

    无法确定主机“github.com(140.82.118.3)”的真实性。 RSA密钥指纹是SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8。 是否确实要继续连接(是/否)

    通过回答“是”,您告诉您的SSH客户端您信任密钥的所有者,该密钥具有指定哈希值的公共部分
    nthbg6kxupjwgl7e1igocpromtxdcarlvikw6e5sy8
    。这可以确保您连接到真正的github.com,而不是伪装成github.com的欺诈主机。(请注意,给定的指纹与官方github上的指纹匹配。)下次连接到主机并从主机接收公钥时,OpenSSH将遍历
    已知的\u hosts
    文件中的条目,找到相应的指纹,并假定主机是可信的,不再提示您

    但这一切都是关于Github对您的身份验证。e是否信任服务器

    现在转到第二部分,其中涉及向服务器证明您的真实性:

    同样,如果它是这样工作的,如果有人想要推送东西,他只需要窃取Github链接到我帐户的公钥B“give/storage in.git”,然后推送我不想要的东西

    不是那样的。Github只允许对私钥的所有者执行任何类型的操作,私钥的公共对应项在您的帐户首选项页面上注册。窃取公钥是毫无意义的,因为它是公开的,也就是说,它不是秘密的

    假设有人知道你的Github帐户的公钥,并试图推动对你的回购协议进行一些更改。他连接到Github并向其发送您的公钥,以便Github相信它正在与真正的帐户所有者交谈。但是为了确保这一点,Github向客户机挑战一项只有私钥所有者才能完成的解密任务。由于只有您拥有帐户的私钥,因此只有您可以代表您推送到您的回购。这就是为什么你应该小心保管你的私钥

    现在,当我推的时候,我没有Github的公钥B在相反的方向上做同样的事情。。还是储存在某个地方

    Github.com在建立SSH连接时发送其公钥。如果您在某种UNIX上使用OpenSSH,它将存储在文件
    $HOME/.ssh/known_hosts
    中。事实上,当您第一次通过SSH连接到Github时,当您对以下提示回答“是”时,它就会到达:

    无法确定主机“github.com(140.82.118.3)”的真实性。 RSA密钥指纹是SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8。 是否确实要继续连接(是/否)

    通过回答“是”,您告诉您的SSH客户端您信任密钥的所有者,该密钥具有指定哈希值的公共部分
    nthbg6kxupjwgl7e1igocpromtxdcarlvikw6e5sy8
    。这可以确保您连接到真正的github.com,而不是伪装成github.com的欺诈主机。(请注意,给定的指纹与官方github上的指纹匹配。)下次连接到主机并从主机接收公钥时,OpenSSH将遍历
    已知的\u hosts
    文件中的条目,找到相应的指纹,并假定主机是可信的,不再提示您

    但这一切都是关于Github对您的身份验证。e是否信任服务器

    现在转到第二部分,其中涉及向服务器证明您的真实性:

    同样,如果它是这样工作的,如果有人想要推送东西,他只需要窃取Github链接到我帐户的公钥B“give/storage in.git”,然后推送我不想要的东西

    不是那样的。Github只允许对私钥的所有者执行任何类型的操作,私钥的公共对应项在您的帐户首选项页面上注册。窃取公钥是毫无意义的,因为它是公开的,也就是说,它不是秘密的

    假设有人知道你的Github帐户的公钥,并试图向你的代表推送一些更改