我知道这个问题已经有答案了。但是我想添加我的解决方法,因为它可能对将来的其他人有帮助。
常见的关键错误是:Permission denied (publickey)
。你可以使用keys:add
通知Heroku你的新密钥来解决这个问题。
简而言之,请按照以下步骤操作:https://devcenter.heroku.com/articles/keys
首先,如果你没有密钥,你必须创建一个:
ssh-keygen -t rsa
heroku keys:add
heroku keys:add
命令可以帮助你创建一个。 - MygodRSA
,请运行ssh-keygen -t rsa
,否则应该足够运行heroku keys:add
。 - Volatil3~/.ssh/config
文件中添加一个条目,将我的新SSH密钥指定为Host heroku.com
的IdentityFile
。 - digitalronin我想和大家分享一下,我找到了自己问题的答案。
把问题写下来让我更加清晰地认识到了它,然后我进一步调查了我认为问题出现的地方:ssh密钥。
结果证明我的想法是正确的。问题不在于密钥本身,而是我没有将其添加到我本地Mac的已知ssh密钥列表中。因此,即使我的Heroku账户已经上传了正确的密钥,但由于我的Mac电脑上找不到该密钥,所以无法进行身份验证。解决方案是什么?
ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l
我希望给予https://help.github.com/articles/error-permission-denied-publickey应有的认可,因为它是一个很好的参考资料。
Git Bash
(右键单击一个文件夹),并启动一个ssh-agent
,可以通过运行"ssh-agent
"(请注意反引号)来实现,然后按照上述方法添加密钥。每次启动Git Bash
/ssh-agent
时,都需要执行此操作,否则它会忘记已添加的内容。 - TWiStErRob我遇到了完全相同的错误(在Windows 7上),但原因不同。我以一种不同的方式解决了它,所以我想在这里为其他人添加原因和解决方案。
尽管错误似乎指向了Heroku,但实际上错误是说“Heroku无法访问git存储库”。我发誓所有服务器上都有相同的密钥,因为我同时在一个接一个地创建它并将其上传到服务器上。
在花费了将近一天的时间后,我意识到由于git只显示指纹而不是实际密钥,我无法验证它的密钥是否与我的硬盘或Heroku上的密钥匹配。我查看了known hosts文件,猜猜看……它显示每个服务器的密钥,我清楚地看到git和Heroku公钥不匹配。
1)删除密钥文件夹中的所有文件,使用github网站删除密钥以及使用git bash和命令heroku keys:clear
从heroku中删除密钥
2)按照github的说明在此处生成新的密钥对,并将公钥上传到git
3)使用git bash-
heroku keys:add
将相同的密钥上传到Heroku。
现在git push heroku master
可以工作了。
真是一场噩梦,希望这能帮助到有需要的人。
Bryan
我遇到的问题是,我只在GitHub账户上使用了https。我需要确保我的GitHub帐户设置为ssh访问,并且GitHub和Heroku都使用相同的公钥。以下是我采取的步骤:
导航到~/.ssh目录,如果有id_rsa和id_rsa.pub,请删除它们。我使用新密钥开始,尽管这可能不是必要的。
$ cd ~/.ssh
$ rm id_rsa id_rsa.pub
登录heroku,创建一个新站点并添加您的公钥:
$ heroku login
...
$ heroku create
$ heroku keys:add
$ git push heroku master
我遇到了与Linux Ubuntu类似的问题,不过已经解决了。看起来操作系统混淆了/root/.ssh/和home/user/.ssh/目录,我的做法是:
heroku keys
heroku keys:clear
heroku keys:add
现在如果Heroku找不到密钥并要求立即生成一个,则意味着您与我遇到了相同的问题。在此处执行add命令,例如heroku keys:add /root/.ssh/id_rsa.pub
,添加的路径将是步骤2中获得的路径。git push heroku master
在Windows 8上的操作步骤
将ssh-keygen目录添加到系统PATH变量中,通常为C:\Program Files (x86)\Git\bin
打开CMD,进入C:\Users\Me\目录
生成SSH密钥 ssh-keygen -t rsa
输入要保存密钥的文件名(//.ssh/id_rsa):.ssh/id_rsa (将默认不正确的路径更改为.ssh/somegoodname_rsa)
将密钥添加到Heroku heroku keys:add
从列表中选择创建的密钥
进入应用程序目录,编写一些优美的代码
初始化git仓库 git init
git add .
git commit -m 'chore(release): v0.0.1
创建Heroku应用程序 heroku create
部署您的应用程序 git push heroku master
打开您的应用程序 heroku open
我遇到了同样的错误,因为我有4个ssh密钥,所以我尝试按照以下步骤进行:
ssh-keygen -t rsa
heroku keys:add
1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub
我选择第三个选项,也就是最新的版本。
接着,我修复了这个错误。
我曾经遇到过类似的问题,尝试了很多方法。最终对我有用的是安装在 Windows 上的 Gnu (https://github.com/bmatzelle/gow/releases),并确保它使用该目录内的 ssh 工具而不是 Git 的工具。一旦安装完成,请使用以下命令进行测试(请确保如果它在您的环境变量 PATH 中,则在 Git\bin 之前):
C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT
我按照这里的说明使用putty和pageant:http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/
一旦密钥已被发送到Heroku(heroku keys:add c:\Users\Person.ssh\id_rsa.pub),使用:
ssh -v <username>@heroku.com
请确保您的堆栈正在使用Putty - 即一个工作堆栈:
Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command
之前运行过但失败了的程序:
C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
您需要通过输入以下命令来创建新的SSH密钥:ssh-keygen -t rsa
然后您需要添加:heroku keys:add
接着,如果您输入 heroku open 命令,问题就会得到解决。
对我而言,这个方法很有效,您也可以试试看...
git remote set-url heroku <heroku-url-here>