GitHub:权限被拒绝(公钥)。致命:远端意外挂断

Posted

技术标签:

【中文标题】GitHub:权限被拒绝(公钥)。致命:远端意外挂断【英文标题】:GitHub: Permission denied (publickey). fatal: The remote end hung up unexpectedly 【发布时间】:2011-04-06 17:41:24 【问题描述】:

我已按照以下说明上传项目。

全局设置:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

但我收到此错误:

权限被拒绝(公钥)。致命的: 远端意外挂断

【问题讨论】:

【参考方案1】:

我必须将我的公钥添加到 github。 https://help.github.com/articles/generating-ssh-keys

【讨论】:

如果您运行的是 linux 机器,如果您使用的是 emacs 或 nano,复制 id_rsa.pub 文件的内容可能会很困难。尝试使用文本编辑器进行复制(记事本、TextEdit 或 gedit 都可以)。如果你没有这些,那么你可以使用 vim。 @GokulNK 另一种选择是使用 xclip,正如页面推荐的那样。 cat ~/.ssh/id_rsa.pub 可能是一个选项? :p 您可以在 OS X 中使用pbcopy < ~/.ssh/id_rsa.pub,然后将其 (cmd+v) 粘贴到 github 页面中。【参考方案2】:

创建 RSA 密钥对后,您必须使用以下命令将其添加到 SSH:

ssh-add ~/.ssh/id_rsa

或您创建 RSA 密钥对的任何位置。

【讨论】:

救命稻草!你击中了要害。谢谢 同意,重要的是首先检查 ssh-agent 是否正在运行(GitHub 的文档有这样做),以及密钥是否添加到其密钥环中。不过,还有一些值得检查的地方,因为它可能会阻止密钥被使用,即使它在 ssh-agent 的密钥环中,是 private 密钥的正确访问模式:它应该是 0600 (chmod 600 ~/.ssh/id_rsa,基本上)。【参考方案3】:

是的,这是一个公钥问题。 我是 windows 用户,下面的页面帮助我解决了这个问题。

http://help.github.com/win-set-up-git/

更准确地说,这个链接应该会有所帮助

https://help.github.com/articles/error-permission-denied-publickey

【讨论】:

虽然这在理论上可以回答问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。【参考方案4】:

对我来说,问题是通过 sudo 执行克隆。

如果您克隆到您拥有用户权限的目录 (/home/user/git),它将正常工作。

(说明:以超级用户身份运行命令将无法使用与以用户身份运行命令相同的公钥。因此 Github 拒绝连接。)

此解决方案需要已设置 SSH 密钥:https://help.github.com/articles/generating-ssh-keys

【讨论】:

这个解决方案似乎非常接近 learner_19 已经发布的内容【参考方案5】:

使用您的用户名和存储库名称键入以下命令:

git clone https://github.com/user name/repo name

在 Ubuntu 中,这可以完美运行。

【讨论】:

我认为 https 协议需要有一个安全的连接,这就是它起作用的原因。 Git@github.. 对机器不安全。【参考方案6】:

经过长时间的教程,我得到了解决方案。

我按照此链接上的 github 教程进行操作 -> https://help.github.com/articles/error-permission-denied-publickey 并且我能够在每个步骤中进行连接。 但是当我尝试 git push -u origin master 时,我得到了这个错误:

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

请确保您拥有正确的访问权限

我就是这样解决的!! 使用终端进入项目目录并查看

$git remote -v

你会得到这样的东西:

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

如果您使用的不是 git@github.com,请键入以下命令打开 git 目录中的配置文件:

vi .git/config

并配置线路

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

【讨论】:

对我来说,它实际上是通过将 git@github.com 替换为 @github.com “git remote -v”命令不是我以前见过的命令,事实证明它是理解为什么我的一个存储库正在工作而另一个正在返回的关键“当我尝试运行“git ls-remote”时,权限被拒绝(公钥)。很有用。谢谢。【参考方案7】:

就我而言,我必须为另一个用户设置公钥,因为我已经为我的主要用户设置了一个。一旦我切换了用户并执行了上面链接中的命令,我就可以毫无问题地为我的测试服务器执行设置。

【讨论】:

类似问题 - 我以 root 身份登录(并忽略了这一点),而不是使用 SSH 设置的实际用户。无法承诺为任何事情工作。改回正确的用户已解决的问题! 完全没有解释如何实际执行修复。 我不应该把它拼出来,这是给你的,理查德!我正在使用我的非 root 帐户。我必须使用 sudo 前缀从 github 帮助 url (help.github.com/articles/generating-ssh-keys#platform-linux) 执行命令。【参考方案8】:

我遇到了这个问题,但上述解决方案均无效。我可以克隆和获取但无法推送。最终,我发现问题出在我的.git/config 中的url,应该是:

git@github.com:<username>/<project>

(不是ssh://github.com/&lt;username&gt;/&lt;project&gt;.githttps://github.com/&lt;username&gt;/&lt;project&gt;.git)。

【讨论】:

对于 SSH 连接,git@ 部分很神奇。所以ssh://git@github.com/username/project.git 也可以。 .git 真的很重要。此解决方案完美。【参考方案9】:

鉴于这里的所有答案都对我不起作用,我终于找到了我使用 ssh -vT git@bitbucket.org 连接到 Bitbucket(或 Github,在这种情况下无关紧要)的问题。

在我的情况下,失败是由于使用 DSA 密钥而不是 RSA,显然我的 SSH 客户端不再允许这样做。

debug1:跳过 ssh-dss 密钥 /c/Users/USER/.ssh/id_dsa 不在 PubkeyAcceptedKeyTypes 中

解决方案是将其添加到 .ssh/config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

这优雅地将 ssh-dss 密钥类型附加到所有现有接受的公钥类型中,完成后,git 现在可以 ssh 到 Bitbucket 没有问题。

【讨论】:

这是 2015 年 12 月在 Debian 不稳定机器上为我提供的解决方案。我将其限制为“Host bitbucket.org”,因为我已经有一个条目来强制我选择身份。【参考方案10】:

我的问题是,每次我在我的 mac 终端上输入 ssh-keygen 时,我都试图给我的 ssh 密钥一个 SPECIFIC NAME

我只留下“ssh-keygen”生成的名称 = id_rsa 解决了这个问题。您最终将在 Mac 上的 .ssh 文件夹中获得 2 个密钥,id_rsa,这是您的私钥,id_rsa.pub,这是您的公钥。然后我将代码从id_rsa.pub 复制并保存到我的 GitHub 帐户设置中,就是这样。问题解决了。

【讨论】:

对我来说也一样。将名称留空解决了问题。谢谢。 伙计,你完成了我的一天!由于特定的键名,使用控制台需要 2 周!谢谢! 很高兴它有帮助! @eilas 之所以有效,是因为在大多数系统上,默认私钥(~/.ssh/id_rsa~/.ssh/id_dsa~/.ssh/identity)会自动添加到 SSH 身份验证代理中。【参考方案11】:

如果您在计算机上安装了 git,那就太好了:

http://help.github.com/mac-set-up-git/

【讨论】:

【参考方案12】:

添加公钥是解决方案。生成 ssh 密钥:https://help.github.com/articles/generating-ssh-keys 有分步说明。

但是,如果没有以正确的方式生成密钥,问题可能仍然存在。 我发现这也是一个有用的链接:https://help.github.com/articles/error-permission-denied-publickey

在我的情况下,问题是我在不使用 sudo 的情况下生成 ssh-key,但是在使用 git 命令时我需要使用 sudo。 上面链接中的这条评论“如果您在没有 sudo 的情况下生成 SSH 密钥,那么当您尝试使用 sudo git push 之类的命令时,您将不会使用您生成的 SSH 密钥。”帮助了我。

因此,解决方案是我必须将 sudo 与密钥生成命令和 git 命令一起使用。 或者对于其他人,当他们在任何地方都不需要 sudo 时,不要在这两个步骤中的任何一个中使用它。 (密钥生成和 git 命令)。

【讨论】:

【参考方案13】:

我在 Windows 中运行 SSH 或 Git Clone 时遇到了类似的问题。以下发现有助于解决我的问题:

当您运行“rhc setup”或其他 ssh 方法生成 ssh 密钥时,它会在您的主文件夹的 .ssh 文件夹中创建私钥文件 id_rsa,默认为 C:\User\UserID Windows 版 Git 在其安装目录中有自己的 .ssh 文件夹。当你运行 git/ssh 时,它会在这个文件夹中寻找私钥文件 id_rsa 通过将 id_rsa 从主文件夹 .ssh 文件夹复制到 git 安装目录中的 .ssh 文件夹解决了问题

另外,我认为有一种方法可以“告诉”git 使用主文件夹中的默认 .ssh 文件夹,但仍需要弄清楚如何使用。

【讨论】:

【参考方案14】:

对我来说,它是这样工作的:

在 GitHub 中,我将 ssh 链接更改为 https,然后给出以下命令:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

【讨论】:

【参考方案15】:

您可以尝试将您的类型连接更改为从 ssh 到 https 的分支。

    nano project_path/.git/configgit@github.com:username/repository.git 替换为https://username@github.com/username/repository_name.git 保存文件ctrl + o

之后你可以尝试不带公钥的git pull

【讨论】:

【参考方案16】:

在 windows 商店中使用 ubuntu

适用于 linux 的 windows 子系统

,您的 git push 将适用于不同的帐户。

【讨论】:

【参考方案17】:

如果您使用的是 linux 机器,请检查,

你是否安装了 Openssh 如果有,那么您是否有现有的公钥,否则您必须生成一个。 是您添加到您的 github 帐户的公钥。

生成新的 SSH 密钥并将它们添加到我的 Github 帐户解决了我的问题。 您可以查看此页面以获取更多详细信息。 GitHelp.

【讨论】:

【参考方案18】:

您需要设置 SSH 密钥。

This GitHub page 解释如何生成密钥。

如果您有现有的密钥,则复制 $HOME/.ssh/id_rsa.pub 并将其粘贴到 the GitHub SSH settings page。

【讨论】:

【参考方案19】:

如果您使用的是 Mac,解决此问题的一种快速方法是退出 OSX 应用并重新登录。

【讨论】:

【参考方案20】:

我的问题是它不适用于我的私钥上的密码。

希望对某人有所帮助。

【讨论】:

【参考方案21】:

我今天也有这个问题。 解决方案是设置您的“ssh 密钥”。 点击下方网址,按照步骤操作即可解决。

http://github.com/guides/providing-your-ssh-key

【讨论】:

【参考方案22】:

我尝试了提到的解决方案,但仍然失败。 我找到了最终对我有用的解决方案here - 删除然后重新添加远程链接

【讨论】:

【参考方案23】:

我在 Windows 上遇到了同样的问题。我从 SSH 切换到 HTTPS 并运行了 Git PUSH。

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

成功了!希望这会有所帮助。

【讨论】:

虽然这可能是一种解决方法,但它并不能解决最初的问题。

以上是关于GitHub:权限被拒绝(公钥)。致命:远端意外挂断的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab,权限被拒绝(公钥),版本 6-4 稳定

Capistrano 和 GitHub 私人回购 - 权限被拒绝(公钥)

Ansible git clone github 权限被拒绝(公钥)

git@github.com:权限被拒绝(公钥)[主目录回购] [重复]

git push origin master拒绝错误权限(github)

致命:无法创建工作树目录“scrumwala.git。”:权限被拒绝