2013-05-03 201 views
2

当我部署一个Rails应用程序到Amazon EC2服务器使用Capistrano的,我得到亚马逊EC2 + Capistrano的+混帐:权限被拒绝(公钥)

** [IP.compute-1.amazonaws.com :: out] Permission denied (publickey). 
** [IP.compute-1.amazonaws.com :: out] fatal: The remote end hung up unexpectedly 

在执行

git clone 

命令。

我认为它与Github键有关,但我不知道如何设置它。 我会感激每一个建议!

谢谢!

编辑:

我产生在Github上新密钥,把它变成id_rsa.pub我EC2服务器上我创建的文件的.ssh/authorized_keys中这个关键,但它仍然不起作用。

这是什么问题?

+0

尝试'chmod 400 id_rsa'。 – 2013-05-03 18:27:48

回答

1

您可以先使用SSH连接到您的EC2实例,然后使用安装在EC2实例上的ssh密钥从EC2实例克隆您的github repo?

在所有这些分布式工作流程中,事情会变得有点令人困惑,所以让我试着去解决你做错了什么。

您在Github上安装的id_rsa.pub与私钥对应。通常情况下,这是在~/.ssh/id_rsa这个密钥对允许私钥的持有者通过SSH连接到github。

.ssh/authorized_keys是一个SSH服务器配置。 authorized_keys包含公钥(即,id_rsa.pub)以使SSH服务器能够接受来自具有对应私钥的机器的传入连接。 authorized_keys文件与您的克隆问题无关。

EC2实例正试图联系Github存储库,以便从Github克隆存储库并失败。 EC2实例需要一个私钥,配置为与该帐户的相应公共(Github)密钥相匹配。

在EC2实例上生成一个新的密钥对,并将新密钥对中的公钥添加到您的Github帐户。

5

使用ssh代理:

ssh_options[:forward_agent] = true 

要使用你的PEM文件:

ssh_options[:auth_methods] = ["publickey"] 
ssh_options[:keys] = ["/path/to/file.pem"] 

要启用代理本地

$ ssh-add 

你将不得不执行每个命令时间,我不知道'每次'的范围,我添加了ssh-add,每次我在终端打开一个新标签时使用echo ssh-add >> ~/.bashrc,具体取决于您的操作系统和配置。

的过程中,据我的理解是这样的:

  1. 您在有一个SSH代理本地
  2. 您连接到您正在使用PEM文件部署服务器,你ssh做,但这次通过Capistrano
  3. 远程服务器使用您的代理使用您的密钥来签署部署机器内的git repo。
+0

你能告诉我在哪里添加这个ssh选项吗?在bashrc中? – kamal 2015-05-20 13:10:58

+0

让我编辑答案 – juanpastas 2015-05-20 16:58:55

+0

我不记得了,我把这些选项放在cap文件中,应该有包含'ssh_options'的文件,也许在'config/deploy.rb'中 – juanpastas 2015-05-20 17:02:10

相关问题