【问题标题】:Amazon EC2 + Capistrano + Git: Permission denied (publickey)Amazon EC2 + Capistrano + Git:权限被拒绝(公钥)
【发布时间】:2013-04-28 00:58:55
【问题描述】:

当我使用 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,但它还是不行。

这有什么问题?

【问题讨论】:

  • 试试chmod 400 id_rsa

标签: ruby-on-rails git amazon-ec2 key capistrano


【解决方案1】:

使用 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。

【讨论】:

  • 你能告诉我在哪里添加这个 ssh 选项吗?在 bashrc 中?
  • 我不记得了,我把这些选项放在cap文件里,应该有包含ssh_options的文件,可能在config/deploy.rb
【解决方案2】:

您可以先通过 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 账户。

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2016-02-17
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多