【问题标题】:ssh clone not working with githubssh 克隆不适用于 github
【发布时间】:2012-07-20 19:15:27
【问题描述】:

我是 Git 和 GitHub 的新手。

我创建了一个新存储库并尝试在我的本地计算机上进行克隆。

它适用于 https 和 git-readonly URL。也就是说,以下工作正常:

  • git clone https://github.com/npsabari/testrepo.git
  • git clone git://github.com/npsabari/testrepo.git

但是当我尝试git clone git@github.com:npsabari/testrepo.git 时,它不起作用。它给出了以下错误消息:

Cloning into 'testRepo'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

然后我尝试了ssh git@github.com,但我得到了错误:

"Permission denied (publickey)."

而不是欢迎信息。

我应该怎么做才能解决这个问题?错误的原因是什么?

【问题讨论】:

  • 您是否生成、更新并确认了 SSH 密钥?
  • 不!而且我不知道如何生成或更新或确认 SSH 密钥。今天才开始用git..那么,以上都怎么做呢?
  • 在下面查看我的答案,它包含指向教程的链接(第 3 个)

标签: git github


【解决方案1】:

根据 GitHub helperror you're getting 与错误的 SSH 配置有关。请按照setting up SSH for GitHub 的指示进行相应检查。

【讨论】:

  • 解决了!我还有一个疑问,如果我使用其他机器克隆我的存储库,我是否需要在该机器中生成 SSH 密钥并将其添加到我的 github 帐户中?否则我只能从一台机器上 SSH..?
  • 最好为每台机器生成一个密钥。您可以将一台机器从一台机器复制到另一台机器,但不建议这样做,因为一旦一台机器受到威胁,所有使用相同密钥的机器都会受到威胁。一个中间解决方案是在 USB 记忆棒上有一个密钥,并使用标志来告诉你想要使用它们。但是,更好的是每台机器都使用一个键:D
  • Sabari 和@MihaiMaruseac 事实上,我试图将密钥从一个 EC2 实例复制到另一个实例,但失败了。我猜只有新生成的密钥有效?
  • 不,复制密钥也可以。这就是我在切换个人电脑时经常做的事情,而且它总是有效的。
  • 虽然这确实说明了问题所在,但没有说明如何解决它;这似乎是对我的“公主在另一座城堡”的回答meta.stackexchange.com/questions/225370/…
【解决方案2】:

您可以按照以下文档将您的密钥添加到ssh-agent https://help.github.com/en/articles/connecting-to-github-with-ssh

或者你可以运行下面的命令来临时执行一下

ssh-agent bash -c 'ssh-add ~/.ssh/github_rsa; git clone git://github.com/npsabari/testrepo.git'

【讨论】:

    【解决方案3】:

    错误的原因是您没有将公钥 (~/.ssh/id_rsa.pub) 上传到 GitHub。将其添加到您的帐户(您可以通过 github 提供的 Web 面板执行此操作),它将起作用。

    【讨论】:

    • 怎么做?而且我没有将文件 id_rsa.pub 放在 ~/.ssh 文件夹中。如何生成?
    【解决方案4】:

    我经历过这种情况——只有一次——ssh-keygen 生成的密钥被破坏了。检查私钥和公钥文件,它们具有正确的语法、长度等。

    它。只是。没有。工作。

    在同一台机器上,我重新生成了一个密钥对。这终于让我通过 ssh 连接到 github。

    【讨论】:

      【解决方案5】:

      实际上,您首先应该生成 ssh 密钥,然后将它们保存在您的帐户中。

      查看以下链接了解更多详情

      https://help.github.com/articles/generating-ssh-keys

      【讨论】:

        【解决方案6】:

        我想补充一点,如果您需要使用sudo,它可能会干扰,因为 SSH 密钥未绑定到该用户。您可能希望在使用 git 之前而不是之后编辑权限。

        【讨论】:

        • 被低估的答案。必须更改目录所有权并在没有 sudo 的情况下进行克隆,并且它起作用了。谢谢。
        【解决方案7】:

        克隆有两种方式。
        1. SSH
        2. HTTPS
        在我的情况下,第一个问题与您遇到的类似,但后来我尝试通过运行以下命令使用HTTPS 方式。
        git clone https://xyz
        在此之前运行此命令git remote -v。这应该显示
        1. git-url(fetch)
        2. git-url(push)
        如果你在运行命令时看到这两个,它告诉你你有push 权利以及fetch 权利。在您配置并正确设置代理后,如果您仍然发现问题,我解释的这个解决方案应该可以工作。如果您的SSH public key and private key 错误,那么您必须先修复它,然后再进行其他任何操作。

        【讨论】:

          猜你喜欢
          • 2019-10-03
          • 2016-05-07
          • 2021-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-07
          • 2016-12-29
          • 2016-12-22
          相关资源
          最近更新 更多