Amazon EC2 + Capistrano + Git: 权限拒绝 (publickey)

3
当我使用Capistrano将Rails应用程序部署到亚马逊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 - R Milushev
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代理
  2. 您连接到使用pem文件进行部署的服务器,与ssh一样,但这次是通过Capistrano进行连接
  3. 远程服务器使用您的代理来使用您的密钥,在部署机器内检出git仓库。

请问您可以告诉我在哪里添加这个SSH选项吗?是在bashrc文件中吗? - kamal
我不记得了,我把这些选项放在cap文件中,应该有包含“ssh_options”的文件,可能在“config/deploy.rb”中。 - sites

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帐户中。


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