部署 Heroku 代码时权限被拒绝(公钥)。 fatal:远端意外挂断
我尝试使用以下命令行将我的代码部署到 heroku:
git push heroku master
但出现以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共 SSH 密钥,但仍然出现此错误。
I'm attempting to deploy my code to heroku with the following command line:
git push heroku master
but get the following error:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
I have already uploaded my public SSH key, but it still comes up with this error.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
这对我来说是解决方案:
This was the solution for me:
分享我的经验:
Git(我自己安装的)正在寻找名为“id_rsa”的密钥。
因此,我尝试将我的密钥重命名为“id_rsa”和“id_rsa.pub”并且成功了。
顺便说一句,我确信还有其他方法可以做到这一点,但我还没有更深入地研究。
To share my experience :
Git (my own install) was looking for the key named 'id_rsa'.
So I tried to rename my keys to 'id_rsa' and 'id_rsa.pub' and it worked.
Btw, I'm sure there is an other way to do it but I didn't look deeper yet.
如果您已经上传了密钥,请尝试删除密钥,然后重新上传
用新钥匙。
这应该有效。
If you've already uploaded the key then try to remove the key and then re-upload
it with a new key.
this should work.
我花了 3 天的时间尝试了所有可能的组合来让它发挥作用——最后我尝试制作一个 DSA 密钥,它成功了。
如果 DSA 不适合您,请尝试使用 DSA 而不是 RSA。
(我使用的是 Ubuntu 11.10、ruby 1.8.7、heroku 2.15.1)
I killed myself for 3 days trying every possible combination to try to get this to work -- I finally tried making a DSA key instead and it worked.
Try DSA instead of RSA if it's not working for you.
(I'm using Ubuntu 11.10, ruby 1.8.7, heroku 2.15.1)
在 Windows 7,64 位上,上述解决方案(Onur Turhan 的)对我有用,稍作更改如下
输入电子邮件/密码
这在我的 c:\Users\MyName 目录(不在 . ssh 目录)
我想添加正确的“id_rsa.pub”文件是最重要的。使用 keygen 生成公钥后,只需通过查看创建时的时间戳来验证您是否添加了正确的密钥。
On Windows 7,64 bit,the above solution (Onur Turhan's) worked for me with slight changes as below
Enter email/password
This generated two files(id_rsa and id_rsa.pub) in my c:\Users\MyName directory (Not in .ssh directory)
I guess adding the correct "id_rsa.pub" file is the most important.After generating the public key using keygen just verify that you are adding correct key by looking at the time-stamp when it was created.
一个命令就可以工作:
如果它不存在,它就会创建一个。
One single command works:
It will make one if it doesn't exist.
当我的机器上安装 TortoiseGIT 时,我遇到了这个问题。将环境变量
GIT_SSH
从 更改为 并按照本教程使用ssh-keygen
和keys:add
后,
它就可以工作了!
I had this problem when TortoiseGIT was installed on my machine. After changing the environment variable
GIT_SSH
fromto
and following this tutorial with
ssh-keygen
andkeys:add
, it works!推动对我来说很有效,然后突然停止了。
如果heroku api遇到停机,您在尝试推送时将会收到此错误。
检查:
https://status.heroku.com/
,然后再惊慌失措。
Pushing was working for me and then stopped suddenly.
If the heroku api is experiencing downtime, you will get this error when you try to push.
Check:
https://status.heroku.com/
before freaking out too hard.
接下来的顺序
当执行第二条语句时,它会要求输入,只需按 Enter(回车)三次,就会添加一个键。
Sequence to follow
When executing second statement it would ask for input, just press Enter(return) three times and a key will be added.
上面给出的答案确实有效,但发现我需要执行一些额外的步骤才能起作用。
The above given answer DOES work, but found out I needed to do some extra steps before it worked.
对于所有在 Windows 7 上尝试了上述所有操作但仍然不起作用的人,以下是我所做的:
- 从 Git 目录 C:\Program Files (x86)\Git\ 打开 GitBash.exe(不要打开命令提示符,这不起作用)。
- 添加以下内容上面,但你必须删除 #
now run git push heroku master它应该可以工作。
For all those who tried everything mentioned above on Windows 7 and still it didn't work, here is what I've done:
- open GitBash.exe from the Git directory C:\Program Files (x86)\Git\ (don't open a command prompt, this won't work).
- add the following as mentioned above, but you have to delete the #
now run git push heroku master and it should work.
听起来您的
~/.ssh/authorized_keys
文件设置不正确。验证:~/.ssh
的权限是0700。It sounds like your
~/.ssh/authorized_keys
file is not set up correctly. Verify that:~/.ssh
are 0700.我必须这样做:
然后它起作用了:
I had to do:
Then it worked:
检查 heroku 的 .ssh 配置。转到 .ssh 文件夹并打开配置文件
“subl”适用于 Sublime Text,但您可以使用任何您想要的编辑器。查找“IdentityFile”行并确保它列出了非公钥:
不是
这对我来说是这样。我不确定为什么我的配置文件中有公共版本,但它确实存在并且抛出了错误:
Check your .ssh config for heroku. Go to the .ssh folder and open the config file
The 'subl' is for Sublime Text, but you can use whatever editor you wish. Look for the line "IdentityFile" and make sure it has the non public key listed:
not
That did it for me. I'm not sure why mine had the public version in the config file, but it did and it was throwing the error:
在尝试了所有这些想法后我仍然遇到问题。这是我的问题:
我的远程 Heroku 存储库被吓坏了。我刷新如下:
然后删除错误的 Heroku 一个:
然后添加新的
您可以从应用程序的 Heroku 设置页面获取站点名称。祝你好运!
I was still having problems after trying all of these ideas. This was my problem:
My remote heroku repository was funked. I refreshed it as follows:
Then remove the heroku one that is wrong:
Then add the new one
You can get the sitename from your Heroku settings page for your app. Good Luck!
我遇到的问题是在 Windows 上,每当我运行“heroku keys:add”时,它总是选择 github 密钥。因此,这是我解决问题所遵循的步骤,
heroku keys:add
上面的命令要求我生成一个新的密钥,以下是输出
找不到现有的公钥。
您想生成一个吗? [Yn] 是
生成新的 SSH 公钥。
正在上传 SSH 公钥 C:/Documents and Settings/Admin/.ssh/id_rsa.pub... 完成
! ‘heroku’ gem 已被弃用并被 Heroku Toolbelt 取代,从 https://toolbelt.heroku.com< 下载并安装/a>.
heroku keys:add
上面的命令不会给出以下输出
找到现有的公钥:C:/Documents and Settings/Admin/.ssh/id_rsa.pub
上传 SSH 公钥 C:/Documents and Settings/Admin/.ssh/id_rsa.pub... 完成
使用上述步骤解决了问题,并能够在云上部署应用程序。
The problem I faced was on Windows and invariably whenever I run the "heroku keys:add" it selected the github keys. So here are the steps I followed to resolve the issue
heroku keys:add
The above command asked me to generate a new keys and following was the output
Could not find an existing public key.
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key C:/Documents and Settings/Admin/.ssh/id_rsa.pub... done
! The 'heroku' gem has been deprecated and replaced with the Heroku Toolbelt, download and install from https://toolbelt.heroku.com.
heroku keys:add
The above command will not give the following output
Found existing public key: C:/Documents and Settings/Admin/.ssh/id_rsa.pub
Uploading SSH public key C:/Documents and Settings/Admin/.ssh/id_rsa.pub... done
for me using the above steps solved the issue and was able to deploy the application on the cloud.
我遇到了同样的问题;遵循以下步骤应该会有所帮助:
.pub
文件和know_host
).ssh/文件夹
I was experiencing the same problem; following these steps should help:
.pub
files andknow_host
) in.ssh/ folder
我想补充一点,该目录不一定是 C:\Users\[用户名]\.ssh。它是您在其中创建公钥的目录。
例如,我在 Windows 中的主目录已更改为 C:\[用户名]。 .ssh 子文件夹中的主目录是您创建密钥的最佳且最有可能的位置。您可以使用以下命令检查 Windows 中的主目录:
I would just to like to add that the directory is not necessarily C:\Users\[username]\.ssh. It is the directory in which you created your public key in.
For instance my home directory in Windows was changed to C:\[username]. Your home directory in a .ssh sub-folder is the best and most likely place you may have created your keys. You can check your home directory in Windows with the command:
如果您想使用“sudo”,例如:
您还应该为 root 用户生成 ssh 密钥。
它会起作用的。
如果您不使用 root 用户,请在您的用户目录中生成 ssh 密钥。
抱歉,如果我的句子混乱了......
If you want to use "sudo", example:
you should also generate ssh key for your root user.
and it'll work.
if you don't use root user, generate ssh key in your user directory instead.
Sorry if my sentences messed up...
尝试在“磁盘工具”(Mac OS X) 中修复权限。帮助了我
Try repairing permissions in Disk Utility (Mac OS X). Helped me
首先确保隐藏的文件在您的 Mac 中可见。
如果没有,请执行以下操作:
defaults write com.apple.Finder
AppleShowAllFiles TRUE
killall Finder
后续步骤:
Users/user_name/.ssh/
删除所有文件。ssh-keygen -t dsa
中打开终端类型,heroku keys:add ~/.ssh/id_dsa.pub
注意,我是在 Mac OSX 10.7.2 Lion 中完成的。尽管其他人的程序也应该相同。
At first make sure hidden files are visible in your Mac.
If not do:
defaults write com.apple.Finder
AppleShowAllFiles TRUE
killall Finder
Next steps:
Users/user_name/.ssh/
removed all the files.ssh-keygen -t dsa
heroku keys:add ~/.ssh/id_dsa.pub
N.B. I did it in Mac OSX 10.7.2 Lion. Though the procedure should be same in others too.
我也有这个问题。我使用的是 Mac OSX。我解决这个问题的方法是以管理员身份登录
I have this issue as well. I am using Mac OSX. The way I fixed that was to login as admin
dmajkic 的解决方案终于帮助了我:
对于 Windows 用户,这可能意味着:git 客户端找不到你的密钥。
检查 c:\Users\UserName.ssh\ 中的密钥并且!环境变量HOME=c:\Users\用户名\
Solution of dmajkic help me at last:
For Windows users it may means: git client coudn’t find your keys.
Check keys in c:\Users\UserName.ssh\ and! environment variable HOME=c:\Users\UserName\
这对我有用。 heroku 站点未添加到您的已知主机中。转到 window-other-show view-git-git 存储库。从那里克隆存储库。克隆它后,删除刚刚创建的存储库,然后从文件菜单导入它。执行此操作是因为当您克隆存储库时,它不会将其添加到资源管理器视图中。现在您应该拥有 git 存储库和资源管理器视图。
Here is what worked for me. The heroku site is not being added to your known hosts. Go to window-other- show view-git-git repositories. From there clone the repository. Once you clone it, delete the repository that was just created and then import it from the file menu. Do this since when you clone the repository, it does not add it to the explorer view. Now you should have the git repository and the explorer view.
您必须将公钥上传到 Heroku:
如果您没有公钥,Heroku 会提示您自动添加一个,这样可以无缝运行。只需使用:
要清除以前的所有键,请执行以下操作:
要显示所有现有的键,请执行以下操作:
编辑:
上面的内容似乎对我不起作用。我搞乱了 HOME 环境变量,因此 SSH 在错误的目录中搜索密钥。
为了确保 SSH 在正确的目录中检查密钥,请执行以下操作:
这将显示以下(示例)行
Permission returned (publickey).
从上面您可以观察到ssh 在
/c/Wrong/Directory/.ssh
目录中查找密钥,该目录不是我们刚刚添加到 heroku 的公钥的位置(使用heroku keys:add ~/ .ssh/id_rsa.pub
) ( 请注意,在 Windows 操作系统中~
指的是HOME
路径,在 win 7 / 8 中为C:\Users\UserName
)要查看当前主目录,请执行以下操作:
echo $HOME
或echo %HOME%
(Windows)正确设置您的 HOME 目录(我的意思是 .ssh 目录的父目录,以便 ssh 可以在正确的目录中查找密钥)请参阅以下链接:
关于如何设置 Unix 的答案环境变量永久
关于 ssh 在错误目录中查找密钥的问题以及相同的解决方案。
You have to upload your public key to Heroku:
If you don't have a public key, Heroku will prompt you to add one automatically which works seamlessly. Just use:
To clear all your previous keys do :
To display all your existing keys do :
EDIT:
The above did not seem to work for me. I had messed around with the
HOME
environment variable and so SSH was searching for keys in the wrong directory.To ensure that SSH checks for the key in the correct directory do :
Which will display the following ( Sample ) lines
Permission denied (publickey).
From the above you could observe that ssh looks for the keys in the
/c/Wrong/Directory/.ssh
directory which is not where we have the public keys that we just added to heroku ( usingheroku keys:add ~/.ssh/id_rsa.pub
) ( Please note that in windows OS~
refers to theHOME
path which in win 7 / 8 isC:\Users\UserName
)To view your current home directory do :
echo $HOME
orecho %HOME%
( Windows )To set your
HOME
directory correctly ( by correctly I mean the parent directory of.ssh
directory, so that ssh could look for keys in the correct directory ) refer these links :SO Answer on how to set Unix environment variable permanently
SO Question regarding ssh looking for keys in the wrong directory and a solution for the same.
我遇到了同样的问题,以下步骤对我有用,
[电子邮件受保护] &密码
->ssh-keygen -t rsa -f id_rsa
如果询问任何密码短语,请勿使用空白,请填写密码短语,但不要忘记。
生成密钥后,您需要添加它,就像这样
,并将其添加到 heroku
将目录更改为工作区,而不是
使用上面设置的密码。
实际上我也删除了下面的文件,但不确定它们是 imp,
C:\Users\yourusername.heroku\credientals 和 C:\Users\yourusername.ssh\known_hosts
I had the same issue, the steps below worked for me,
[email protected] & password
->ssh-keygen -t rsa -f id_rsa
if asks any passphrase don't use blank, fill with a passphrase,but not forget it.
After generating the key you need to add it, like so
and it to heroku
change directory to workspace, than
use passphrase that you set above.
Actually i also remove files below, but not sure that they are imp,
C:\Users\yourusername.heroku\credientals and C:\Users\yourusername.ssh\known_hosts
这个问题困扰了我几天。
这可能会有所帮助。
1) 找出您现在在 Heroku 中拥有哪些密钥。
2) 构建 ~/.ssh/config 文件:
使用此信息进行编辑
This problem was messing with me for a few days.
This might help.
1) Find out what keys you have in Heroku now.
2) Build a ~/.ssh/config file:
Edit with this info
以下链接解释了如何管理 ssh 密钥: https:/ /devcenter.heroku.com/articles/keys#adding-keys-to-heroku
Here is the link that explains how to manage your ssh keys: https://devcenter.heroku.com/articles/keys#adding-keys-to-heroku
我遇到了同样的问题,因为我没有公钥,所以我这样做了:
这将生成一个公钥,然后它运行良好
I had the same problem cause i had no public keys, so i did:
That will generate a public key and then it works well
如果您是 Windows 用户,此处的其他解决方案可能无法解决您的问题。
我使用 Windows 7 64 位 + Git-1.7.7.1-preview20111027,解决方案是将我的密钥从
C:\users\user\.ssh
复制到C:\Program Files ( x86)\Git\.ssh
。这就是 git 客户端在推送到 heroku 时寻找密钥的地方。我希望这有帮助。
If you are a windows user the other solutions here probably won't solve your problem.
I use Windows 7 64-Bit + Git-1.7.7.1-preview20111027 and the solution was to copy my keys from
C:\users\user\.ssh
toC:\Program Files (x86)\Git\.ssh
. That's where this git client looks for the keys when pushing to heroku.I hope this helps.