3

当我使用 Capistrano 将 Rails 应用程序部署到 Amazon EC2 服务器时,我得到

** [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,但它仍然不起作用。

那有什么问题?

4

2 回答 2

6

要使用 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-agent
  2. 您使用 pem 文件连接到正在部署的服务器,就像使用 . 一样ssh,但这次是通过 Capistrano
  3. 远程服务器使用您的代理使用您的密钥在部署机器内签出 git repo。
于 2013-05-05T03:18:36.537 回答
1

您可以先通过 SSH 连接到您的 EC2 实例,然后再使用安装在您的 EC2 实例上的 ssh 密钥从 EC2 实例克隆您的 github 存储库吗?

对于所有这些分布式工作流程,事情可能会变得有点混乱,所以让我试着弄清楚你做错了什么。

您在 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 账户。

于 2013-05-03T18:37:12.153 回答