Reputation: 5420
Please excuse a bit of frustration, which I will try to keep in check since Heroku is using SO as their customer support (which I think it shoddy to say the least).
For the last five hours I have been trying to get an application to publish, but invariably something goes wrong with the keys. I've read dozens of articles and tried tip after tip in an effort to figure out where, in the stupid, completely opaque process Heroku is screwing up.
My use case is not that difficult: I have created a new keypair for my heroku apps. I have set that key to be my key:
> heroku keys
=== [email protected] Keys
ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected]
I can log in and "create" an application (stupid name, since it seems to be creating a git repo, not any sort of app) without problem. But every *freaking* time I try to push my app, I get:
> git push heroku master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
I have no insight into WTF is going on with it; I'm just stuck banging my head against a keyboard with no recourse but to hope the almighty god of Google can answer it. And google isn't answering it (well, let me take that back, I've seen about a dozen ways to answer this).
For a system that is supposed to be easy, this is a joke. I like the idea of Heroku, but after taking five our to get absolutely nothing done, I'm thinking maybe it is the wrong choice.
Upvotes: 85
Views: 34349
Reputation: 6205
With me, it seemed the problem was that I had ssh-agent running in the background, and the relevant private key had not been added to it.
ps -afe | grep ssh-agent
ssh-add ~/.ssh/id_rsa_heroku_github
I also had to add the public key to github (manually) and heroku
heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
Upvotes: 1
Reputation: 1559
There are a variety of solutions around the web. I will try to condense the available options into one post. Please try your connection again after every step.
Step 1: Attempt adding you public key to Heroku
heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
Step 2: Generate a new set of SSH keys, then attempt the first step again
Step 3: Verify and/or modify your config file
vim ~/.ssh/config
Host heroku.com
Hostname heroku.com
Port 22
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa <--- Should be your public SSH key
TCPKeepAlive yes
User [email protected]
Step 4: Remove the heroku remote from git, the recreate the connection, adding the remote via heroku create will only be an option for new repositories. Be sure to delete your old repo that you originally attempted to create
$ git remote rm heroku
$ heroku create
Step 5: Reinstall Heroku Toolkit
Upvotes: 149
Reputation: 321
If none of the other solutions work for you, be sure that you are logged in linux shell with your account and not with root account.
That way, if you are running with the user that is not the owner of your ssh keys, git will look for the wrong keys to authenticate
Upvotes: 0
Reputation: 18310
Your heroku key and github keys are not in sync.
Determine which key you want to use (recommend creating a new one ie heroku_rsa).
Add the key to github.
Add the same key to heroku using: heroku keys:add
Upvotes: 13
Reputation: 1411
Permission denied (publickey) when deploying heroku code. fatal: The remote end hung up unexpectedly
I think this might have your solution, it did for me at least
Upvotes: 2
Reputation: 393
I've encountered the same issue, and this is my theory as to what's going on:
I signed up for Heroku a long time ago, giving them my github public key. When attempting the usual git push heroku master
, it goes and looks for my private key, found at ~/.ssh/github_rsa
. It then fails silently with the message you posted.
However, I tried later to ssh
into another server using the -i
flag to specify my "identity file" (i.e. private key), and it prompted me for the password to my private key. Having "unlocked" the private key, the git push heroku master
command works. Some conclusions:
ssh
will prompt you for the password to an identity file, git
will not.ssh
, it will stay unlocked for your git
usage.keytool
. Upvotes: 2