【发布时间】:2011-01-08 18:50:38
【问题描述】:
当我想用这个命令推送到github时
git push origin master
我知道了
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
那么,怎么了?
【问题讨论】:
标签: git
当我想用这个命令推送到github时
git push origin master
我知道了
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
那么,怎么了?
【问题讨论】:
标签: git
我发现我的问题是我使用的任何版本的 ssh-keygen 创建了具有错误文件名的文件...文件最初创建在 %USER_HOME%.ssh\ida_rsa 和 ida_rsa.pub 的位置,但 git 期望它们是 id_rsa 和 id_rsa.pub。
我通过运行 git bash 解决了这个问题,然后运行 ssh-keygen
【讨论】:
如果您已经生成了密钥,并且它具有默认名称,则问题可能出在缺少的环境变量中。
在 Windows 7 上,右键单击“我的电脑”并转到属性。单击高级属性,然后单击环境变量按钮。那里添加一个用户环境变量
Name: HOME
Value: %USERPROFILE%
【讨论】:
这是我用来实现此功能的分步指南。
平台:Windows 7
从http://msysgit.github.io/安装msysgit
在安装过程中,接受所有默认选项,除非出现“选择组件”选项。当它出现时,选择“Git Bash Here”选项。虽然这不是必需的,但它在 Windows 资源管理器中工作时添加了一个不错的上下文菜单,我发现这非常有用。
一旦安装了 msysgit,Git Bash 也将被安装。通过以下两种方式之一打开 Git Bash:
在 Git Bash 的命令窗口中,输入:
$ ssh-keygen -t rsa
当要求输入文件名时,只需接受默认值即可。出现提示时选择一个强密码,您的公钥现在应该已保存。您的屏幕应如下所示:
在记事本中打开公钥文件。该文件应位于此处:
C:\Users\{username}\.ssh\id_rsa.pub
将文件中的所有内容复制到剪贴板,然后转到 GitHub 的 SSH 设置页面:
https://github.com/settings/ssh
选择“添加 SSH 密钥”,输入有用的“标题”并将内容粘贴到“密钥”文本区域中。
为了简化您的生活,您可以使用 SSH 代理来保存您的密码,这样您就不需要记住它了。为此,请在 Git Bash 中输入:
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa
系统会提示您输入密码。如果一切顺利,您的身份将被添加。注意:一旦你关闭你的 shell,这个密码就会被忘记。我不确定如何让这种情况在会话中持续存在,但也许有人可以提供帮助?
要测试一切是否正常,请在 Git Bash 中输入:
$ ssh -T git@github.com
您应该会看到“成功”消息。
来源:
https://help.github.com/articles/generating-ssh-keys/
https://help.github.com/articles/working-with-ssh-key-passphrases/
explanation on why eval `ssh-agent -s` should be used instead of just ssh-agent -s
【讨论】:
eval `ssh-agent -s`是关键。我使用这个单行命令来解决问题。
$ eval `ssh-agent -s`
我通过添加系统环境变量解决了类似的问题。关键是我指向 cmd 文件夹中的 git.exe
名称:GIT
值:C:\Program Files (x86)\Git\cmd\git.exe
【讨论】:
git.exe吗?一个在C:\Program Files (x86)\Git\bin,另一个在C:\Program Files (x86)\Git\cmd。
C:\Program Files (x86)\Git\cmd 而不是 \bin 解决了我的问题。
我在 win 8 中有类似的概率。
我犯了一个非常简单的错误:我已经在 git hub 帐户中创建了公钥,因此 y 密钥无法匹配。
解决方案:
1) ssh-keygen -t rsa -C "your mail address"
2) ssh -T git@github.com
【讨论】:
我是一个 git 的新手,并且正在按照网站上的一些安装说明进行操作,但遇到了权限被拒绝(公钥)错误。
我按照说明生成 RSA 密钥对 (ssh-keygen -t rsa)。这工作正常,但我仍然收到错误。我没有意识到的是,您实际上必须访问 GIT 网站 (github.com),在他们的网站上注册并输入该密钥。
我希望这可以帮助另一个可怜的新手。
干杯!
【讨论】:
使用 Windows 8 设置您的 ssh 和 Github
如果显示“Permission denied (publickey)”,则您必须为您的密钥输入密码。不要只想按回车键...这对我有用...我花了五个小时才意识到按回车键使 OpenSSH 觉得您的密钥太公开了,这就是为什么它拒绝您去下一步。
如果显示“无法确定主机 'github.com (203.232.175.90)' 的真实性。”然后,您将必须完成此处显示的过程: [谷歌] (https://help.github.com/articles/error-permission-denied-publickey.)
转到“验证公钥已附加到您的 GitHub 帐户”部分。您想从说帐户的部分开始。 (我假设您已经有一个帐户。
另外,你想在 C:\RailsInstaller\Git.ssh 中,当我执行 'dir' 时,我注意到我有 '.', '..', '已知主机'。我必须通过执行以下操作来获取新密钥(我在 Github 网站上找到了这个):
"ssh-keygen -t rsa -C "your_email@example.com" # 创建一个新的 ssh 密钥,使用提供的电子邮件作为标签 # 生成公钥/私钥 rsa 密钥对。
并注意将保存密钥的文件。不要只按回车键。我的显示“(//.ssh/id_rsa)”我必须输入“/.ssh/id_rsa”以确保它在正确的目录中。
您应该可以在命令行中输入 ssh。如果你不能这样做,你将不得不将它添加到你的路径中。
【讨论】:
显然,您可以使用plink 作为主要的 ssh 客户端,然后将您的密钥加载到 pageant 中(如果您像我一样,您已经这样做了):
您可以通过将 GIT_SSH 环境变量设置为 plink.exe 路径来做到这一点,如下所示:
设置 GIT_SSH=C:\Program Files\PuTTY\plink.exe
或者,您可以使用 TortoiseGit 中的 plink:
设置 GIT_SSH=c:\Program Files\TortoiseGit\bin\TortoisePLink.exe
致谢:原始解决方案取自this blog post
【讨论】:
setx GIT_SSH "C:\Program Files (x86)\PuTTY\plink.exe"
github.com 在host 中输入,即可接受主机。
您的 heroku 密钥可能有问题。试试:
heroku keys:add
这里有类似的问题:Heroku Git - fatal: The remote end hung up unexpectedly
【讨论】:
这是针对具有相同错误签名的非常具体问题的解决方案。这是我犯的错误,而且很容易犯。基本上,而不是这样做
git remote add origin git@github.com:myusername/myrepo.git
我做了这个(注意错字)
git remote add origin get@github.com:myusername/myrepo.git
http://www.celticwolf.com/blog/2011/02/08/git-permission-denied-publickey/
【讨论】:
我也遇到过类似的问题:
我使用 git bash 在某个目录中创建了“redssh”和“redssh.pub”。 权限被拒绝...
但是,“id_rsa.pub”和“id_rsa”出现在: C:/Users/myName/.ssh/
将 id_rsa.pub 内容复制到 github
【讨论】:
问题可能与 ssh.exe 在 PATH 环境变量中的顺序有关。
在我的情况下,C:\Program Files(x86)\git 和我的 C:\cwgwin 目录中都有一个 ssh.exe。当我在我的 Git Bash 中时,一切正常(它在 git 目录中使用 ssh),但是当我在命令提示符中时,它在我的 cygwin 目录中使用 ssh。
当我尝试访问 github 时,无法使用我的私钥找到 .ssh 文件夹,因为该密钥未附加到命令提示符使用的 ssh(即 C:\cygwin 之一),这就是为什么我收到了 Permission Denied 错误。
我所做的是重命名(或删除)我的 C:\cygwin 目录中的 git.exe 和 ssh.exe,并确保 C:\Program Files(x86)\git 出现在 C:\cwgwin 之前路径顺序。
【讨论】:
这是 Windows 7 的默认输出。
c:\test\app>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):
Could not create directory '//.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open //.ssh/id_rsa failed: No such host or network path.
Saving the key failed: //.ssh/id_rsa.
按照http://help.github.com/win-set-up-git/ ?? 使用 git 而不是命令提示符
【讨论】:
我能够通过以下方式解决此问题:
当你这样做时:
ssh-keygen -t rsa
它会提示您(可选)输入文件名以保存生成的密钥。 指定文件名浪费了我一整天!第二天我让它使用默认值 文件名和问题消失了!想象!!
平台是Win7和msysgit。
【讨论】:
id_rsa),请确保将其添加到 ~/.ssh/config:IdentityFile ~/.ssh/customname(替换 customname使用您的密钥名称,不带.pub)。这在 Linux 环境中似乎没有必要。
您是否为自己生成了一个 SSH 密钥并将其添加到您的 Github 帐户中?他们有这个here的指南。
【讨论】: