【问题标题】:GitHub: Permission denied (publickey). fatal: Could not read from remote repositoryGitHub:权限被拒绝(公钥)。致命:无法从远程存储库中读取
【发布时间】:2016-11-28 02:34:57
【问题描述】:

我在使用 GitHub 时遇到了问题。我在玩 Git 的远程存储库。

当我现在尝试对远程目录进行任何更改时,即

git remote show origin

git push -u origin master

我收到此错误

权限被拒绝(公钥)。 致命:无法从远程存储库读取。

请确保您拥有正确的访问权限 并且存储库存在。 Ulrichs-MacBook-Pro:coredatatest ulrichheinelt$ git push -u origin master 权限被拒绝(公钥)。 致命:无法从远程存储库读取。

当我可以从一个新的(空的)远程目录重新开始时,我会很高兴。或者有没有办法修复这个错误?

这是我使用 GitHub 的第一步,从昨天开始...... 非常感谢!

编辑 1

我的设置https://github.com/UlliH/CoreDataTest/settings

...

编辑 2

太早快乐 :-(

设置SSH和GPG密钥后,错误依旧。 :-/

编辑 3

我觉得没错,但还是一样……

【问题讨论】:

  • 检查 ssh keys 到你的 github 配置文件的设置中。
  • 你的公钥发布到github了吗?
  • @Shravan40 感谢您的快速回复。我怎么能做到这一点,我是一个绝对的 Git-Newbe
  • @mszymborski 正如 Shravan40 所说,作为一个 Git 新手,我不知道该怎么做
  • @UlliH :转到您的 github 个人资料。打开设置并选择SSH and GPG Keys,看看你是否在那里添加了任何键。

标签: git github git-remote


【解决方案1】:
  1. 使用 ssh-keygen -t rsa -b 4096 -C "your email" 生成 SSH 密钥。
  2. cat ~/.ssh/id_rsa.pub 的输出复制到剪贴板
  3. 将上面复制的输出粘贴到https://github.com/settings/ssh/new的表单中

更新:如果你仍然面临“ssh: connect to host github.com port 22: Connection timed out”,那么按照以下步骤。

检查连接,多半会超时

$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out

通过提供可选参数端口检查相同

$ ssh -T -p 443 git@ssh.github.com
Hi <user_name>! You've successfully authenticated, but GitHub does not provide shell access.

更新 SSH 设置

$ vim ~/.ssh/config
# Add github in the know hosts
Host github.com
  Hostname ssh.github.com
  Port 443

检查连接,基本上这次会连接

$ ssh -T git@github.com
Hi <user_name>! You've successfully authenticated, but GitHub does not
provide shell access.

【讨论】:

  • 找不到 Github 配置文件 -> 设置 -> SSH 和 GPG 密钥 -> 添加新的 SSH 密钥
  • 点击您的头像图标,将在右上角打开一个下拉菜单。
  • @Evgeny Karkan 更新了我的问题。你一定认为,我疯了;-)
  • 我说的不是回购设置,而是用户配置文件设置...点击此链接并找到它github.com/UlliH - 你能看到右上角的Edit Profile 按钮吗?
  • @Evgeny Karkan 我也是!非常感谢!给我一个答案,这样我就可以投票你的答案并接受它!剩下的我明天做
【解决方案2】:
  • 在您的GitHub 个人资料上有一个Edit Profile 按钮。
    它位于网页的右上角。
  • 按下它,你会看到左边的Personal Settings菜单。
  • 在该菜单中找到SSH and GPG keys 选项并按下它。
  • 您将看到一个选项 New SSH key 添加新密钥。

【讨论】:

【解决方案3】:
  1. 生成您的密钥

    ssh-keygen

  2. 可视化您的钥匙

    ls ~/.ssh

    id_rsa id_rsa.pub

  3. 启动代理

    eval `ssh-agent`

  4. 将您的密钥添加到代理

    ssh-add ~/.ssh/id_rsa

【讨论】:

    【解决方案4】:

    对我来说,我必须设置使用什么 SSH 密钥的主机。 在您的本地计算机 SSH 文件夹中,通常在 ~/.ssh 下使用您喜欢的编辑器(如 vimgedit

    )创建/编辑名为 config 的文件
    vim ~/.ssh/config
    

    并在您的 git HostHostName 和 ssh IdentityFile(您的 ssh 私钥文件路径)中添加以下内容:

    Host gitlab.example.com
        HostName gitlab.example.com
        IdentityFile /home/YOURUSERNAME/.ssh/id_rsa
    

    【讨论】:

      【解决方案5】:

      我的 ssh 连接也有同样的问题。我试图通过 ssh 来解决它,但找不到可行的解决方案。因此,在这种情况下,我将远程 URL 从 SSH 更改为 HTTPS。我使用了命令: $ git remote set-url origin https://github.com/USERNAME/REPOSITORY.git。 您可以使用以下命令查看您的远程 url: $ git remote -v.

      您可以在Here找到更多详细信息

      这会将您的远程 URL 更改为 HTTPS,因此您现在必须输入您的 GitHub 用户名和密码才能将您的项目推送到远程存储库。我知道 ssh 比 HTTPS 更容易,这意味着您不必输入用户名和密码,但是如果您没有找到任何通过 ssh 修复它的解决方案,并且您急于推动您的代码到你的仓库。

      【讨论】:

      • 如果微软不打算删除该功能,这将是一个很好的建议.....
      【解决方案6】:

      在 Windows 上,在 powershell 或命令提示符下使用 git 时会出现问题。在 Windows 上使用 Git Bash 为我解决了这个问题,因为它允许 ssh-agent 在后台正确运行,并允许进行必要的 SSH 凭据转发。

      按照 Git Bash 中此链接上的说明操作对我有用:https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

      【讨论】:

        【解决方案7】:

        我之前通过在关键路径中添加以下文件解决了同样的问题。

        我已经使用 git bash (ssh-keygen) 创建了密钥,这会自动将密钥保存到 C:\Users\{username}\.ssh 文件夹中。

        然后我创建了一个没有扩展名的文件“config”并添加了以下代码:

        Host *
             PubkeyAcceptedKeyTypes +ssh-rsa
        

        现在,尝试使用git clone 命令再次克隆。

        【讨论】:

          【解决方案8】:

          对于那些在 Windows 上的用户,即使遵循上述解决方案仍然无法解决这个问题。我按照这些使其工作。

          1. 转到 C:\Users.ssh 或直接在命令提示符下 cd 到此文件夹
          2. 在命令提示符下使用ssh-keygen -t rsa -b 4096 -C "your email" 生成 SSH 密钥
          3. 第二步的重要方面是将所有内容保留为默认值,并且也不添加密码。一直按回车,直到生成密钥。我正在更改文件的名称并添加密码,但它对我不起作用。将创建两个文件,即 id_rsa 和 id_rsa.pub
          4. type id_rsa.pubcat id_rsa.pub for linux 的输出复制到剪贴板
          5. 将此密钥粘贴到 git 或 bitbucket 帐户下的 SSH 密钥中
          6. 关闭 CMD 并立即尝试使用 git clone,它应该可以工作了

          *我没有使用ssh-add id_rsa,因为它已将此私钥(id_rsa)添加到保险库中

          【讨论】:

            【解决方案9】:
            1. 确保您已正确命名“公钥”和“私钥”文件;就像“id_rsa”和“id_rsa.pub”一样。这可以在您的 users/.ssh 文件夹中找到。

            2. 在 GitHub 中添加公钥

            3. 重新启动终端(支持 bash)并尝试再次克隆

            如果您对 repo 有写访问权限,那么您应该可以进行这些更改。

            根据经验(花了一个小时后),我在任何论坛上都找不到任何信息表明我们必须明确保留上述私有和公共文件的名称。

            编码愉快!

            【讨论】:

            • 我们可以将这些文件命名为 github_rsa 吗?
            【解决方案10】:

            如果你们中的任何人在 Bitbucket 上遇到同样的问题,那么这里是解决方案:

            问题:
            ------

            Demo@L90TQCLQ MINGW64 /u/works (master) $ git clone ssh://git@bitbucket.internal.abc.com:5449/rem/jenkinspipeline.git 克隆到“jenkinspipeline”中...... git@bitbucket.internal.abc.com:权限被拒绝(公钥)。 致命:无法从远程存储库中读取

            请确保您拥有正确的访问权限 并且存储库存在。

            解决方案:
            Demo@L90TQCLQ MINGW64 /u/works (master) $ cat

            转到:https://bitbucket.internal.abc.com/plugins/servlet/ssh/projects/REM/repos/jenkinspipeline/keys 1) 添加密钥 复制/粘贴 id_rsa.pub 键值:


            完毕! 现在您可以克隆 git 存储库了

            KDemo@L90TQCLQ MINGW64 /u/works (master) $ git clone ssh://git@bitbucket.internal.abc.com:5449/rem/jenkinspipeline.git 克隆到“jenkinspipeline”中...... 远程:枚举对象:1146,完成。 远程:计数对象:100% (1146/1146),完成。 远程:压缩对象:100% (987/987),完成。 远程:总计 1146(增量 465),重复使用 0(增量 0) 接收对象:100% (1146/1146), 149.53 KiB | 172.00 KiB/s,完成。 解决增量:100% (465/465),完成。

            【讨论】:

              【解决方案11】:

              在我在 linux 上使用 git 的短暂经验中,我发现这个错误有两个简单的答案。

              按此顺序运行这些命令

              git remote set-url --add origin <https://github.com/username/repo>
              git remote set-url --delete origin <git@github.com:username/repo>
              

              这将重新配置您的配置文件以使用 HTTPS 源而不是 SSH。

              现在尝试运行推送或拉取命令。

              重新启动您的 linux 虚拟机(如果您使用的是一个)和/或主机。重新启动已经不止一次为我解决了这个问题。

              【讨论】:

                猜你喜欢
                • 2014-08-30
                • 2018-08-24
                • 1970-01-01
                • 2017-07-31
                • 1970-01-01
                • 1970-01-01
                • 2013-07-11
                • 1970-01-01
                • 2014-02-10
                相关资源
                最近更新 更多