克隆 Heroku 时出现 SSH 权限被拒绝的问题。

17
我刚买了一台新电脑,现在正在尝试将我的Heroku项目克隆到它上面。
到目前为止,我已经完成了以下步骤。我没有包含跟踪信息,但所有东西都保存在正确的位置,并且函数运行时没有出现错误。
>> sudo ssh-keygen
>> heroku keys:add
>> sudo git clone -o heroku git@heroku.com:myapp.git

Initialized empty Git repository in /Users/macuser/Sites/shwagr/shwagr/.git/
Permission denied (publickey).

然后我听说可以通过ssh bash来完成这个操作..


>ssh-agent bash
>ssh-add ~/.ssh

Permissions 0777 for '/Users/macuser/.ssh' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

什么?好的,爸爸。。
>>sudo chmod 700 ~/.ssh
>>ssh-agent bash
>>ssh-add ~/.ssh
Enter passphrase for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh: 
Bad passphrase, try again for /Users/macuser/.ssh:

我不确定这里的密码是什么,但肯定不是我设置的。如果我只是按回车键,它就会退出,但这并没有给我留下它已经工作的印象。因此,我仍然无法克隆存储库。

有什么想法吗?

更新 我进入了我的~/.ssh文件,并执行了ssh-keygen -t rsa,然后我创建了一个名为love的新密钥。接着,我成功地执行了heroku keys:add love.pub

然后我去进行git clone操作...

sudo git clone -o heroku git@heroku.com:mysite.git

Initialized empty Git repository in /Users/macuser/Sites/shwagr/shwagr/.git/
Permission denied (publickey).

更新2

我删除了~/.ssh文件夹,并且没有使用sudo重新创建它。然后我从heroku上删除了今天创建的所有密钥,重新启动了进程。

仍然出现相同的错误。

更新3

>>heroku keys

  No Keys for this computer.

>>sudo heroku keys

  No Keys for this computer

>>heroku keys:add

>>heroku keys

ssh-rsa AAAA...J67lw== macuser@Mac-Users-MacBook-Pro.local

将这些密钥与我的密钥进行比较:它们完全相同。:D

权限被拒绝。

尝试 4

heroku keys:clear rm -rf ~/.ssh mkdir ~/.ssh cd ~/.ssh ssh-keygen -t rsa heroku keys:add cd /Users/macuser/Sites/ sudo git clone -o heroku git@heroku.com:shwagr.git

失败了。

致命错误:远程端意外挂起

重大更新

刚刚发现git仓库实际上是空的。它只是一个符号链接(当您将真实域名附加到它时,它仍然使用旧域名作为真实仓库)。因此,当我拉取Heroku的默认名称之一,例如smooth-buttery-back-52.git,它可以正常工作,并且实际上是我的仓库。


1
执行以下命令heroku keys:remove your_user@your_host以删除当前主机上的密钥。然后执行heroku keys进行验证。再次使用heroku keys:add添加密钥。最后用heroku keys将其与~/.ssh/id_rsa.pub中显示的密钥做比较,进行二次验证。 - prodigitalson
1
你是否使用 sudo 命令执行了 rm -rf /Users/macuser/Sites/shwagr/shwagr/.git/ 操作?另外,你的克隆命令是否像这样:git clone git@heroku.com:mysite.git -o heroku - prodigitalson
1
告诉我,你是否生成了除RSA之外的其他密钥?我记得有人遇到过问题,因为默认使用他们的DSA密钥(你可以在.ssh/config中将默认设置为RSA)。此外,你可能不想特别命名密钥为除id_TYPE.pub之外的任何名称,否则你还需要进行一些配置设置。 - prodigitalson
1
我突然想到一个办法...尝试将你的 ~/.heroku 目录移开并重新设置它...我不认为里面有任何会引起问题的东西,但或许可以试一下。另外,如果你有 ~/.gitconfig 文件,请确保其中没有任何冲突的内容。 - prodigitalson
1
嗯,事实证明那个 Git 存储库里面什么也没有,而且我的密钥确实有效。我给应用程序起了一个名字,但是存储库实际上并不是以那个名字保存的,而是以它默认的名字保存的。我真是太蠢了。非常感谢 prodigitalson。享受我即将给你的好评吧。 - Trip
显示剩余12条评论
6个回答

11

我按照Heroku提供的步骤进行操作,成功了。当你生成ssh keys之后(文件名并不重要),只需要执行以下操作:

> heroku login
> heroku keys:add

第一条语句会提示您输入Heroku的用户ID/密码。一旦您通过身份验证,运行第二个命令会选择所有公钥并将其推送到heroku.com。之后,您可以运行git clone,它将像魔术般地工作!


嗯,实际上对我来说“heroku login”有效。没有再添加密钥。谢谢。 - shadowhorst

6
>> sudo ssh-keygen

不要使用sudo。这将为root用户创建密钥,而不是您的用户。除非您有某种奇怪的原因要使用root用户。但是,如果您要使用此密钥执行所有相关命令,则需要在命令前加上sudo


备份您的SSH配置:mv ~/.ssh ~/ssh.bak(如果必要,请使用sudo,因为您可能会意外地锁定自己)。然后再次运行ssh-keygen。如果您在ssh.back/config中设置了任何特殊内容,请将其复制回新生成的文件中。 - prodigitalson
2
由于你刚刚购买了一台新电脑,请恢复它并且永远不要使用sudo,除非你真的非常需要。使用rvm和homebrew并保持本地 :) 你现在正式进入了权限地狱。 - Jed Schneider
我赞同Jed的观点,但我认为你不应该放弃sudo,而是应该学习它的含义和影响,然后在必要时使用它。此外,我建议使用macports而不是homebrew,但这实际上是个人偏好的问题。 - prodigitalson
谢谢,你救了我一些头发。我重建了我的Mac并使用sudo生成了我的密钥,这导致Heroku出现问题。我从Heroku中删除了所有的密钥,使用ssh-keygen创建了一个新的密钥,heroku keys:add,然后我的git push就像个冠军一样工作了。 - Don

3
如果您已经完成
heroku keys:add

如果您仍然遇到错误,请尝试:
ssh-add

3

2

1

你为你的sudo账户创建了一个密钥,但没有为你的用户账户创建密钥,并且你没有执行sudo heroku keys:add,所以它上传了本地用户密钥而不是sudo密钥,我猜测是这样。为什么你想让你的主目录中的本地应用程序具有sudo权限呢?我建议你取消sudo并按照这个教程使用你的用户账户进行操作:http://docs.heroku.com/keys


无法打开love:权限被拒绝。 保存密钥失败:love。 - Trip
@Trip:请看我在答案评论中的建议,这里已经出现了问题,需要从头开始重新做。只有这样才能确保解决问题。 - prodigitalson
我已经更新了我的答案,但问题仍然存在。是否存在权限问题? - Trip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接