Ruby on rails 亚马逊EC2&x2B;卡皮斯特拉诺+;Git:权限被拒绝(公钥)

Ruby on rails 亚马逊EC2&x2B;卡皮斯特拉诺+;Git:权限被拒绝(公钥),ruby-on-rails,git,amazon-ec2,key,capistrano,Ruby On Rails,Git,Amazon Ec2,Key,Capistrano,当我使用Capistrano将Rails应用程序部署到AmazonEC2服务器时,我得到 ** [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密钥有关,但我不知道如何设置它。 如果你能给

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

** [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\u rsa.pub中,并在我的EC2服务器上用该密钥创建了文件.ssh/authorized\u keys,但它仍然不起作用


有什么问题吗?

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

有了所有这些分布式工作流,事情可能会变得有点混乱,所以让我试着找出你做错了什么

您安装在Github上的id_rsa.pub与私钥相对应。通常,这是在
~/.ssh/id\u rsa
中。此密钥对允许私钥持有者通过ssh到github

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

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

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

要使用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
在终端中打开新选项卡时运行,具体取决于您的操作系统和配置

据我所知,这个过程是这样的:

  • 您的本地服务器中有一个ssh代理
  • 和使用
    ssh
    一样,您可以使用pem文件连接到正在部署的服务器,但这次是通过Capistrano
  • 远程服务器使用您的代理使用您的密钥签出部署计算机内的git repo

  • 请尝试
    chmod 400 id\u rsa
    。您能告诉我在哪里添加此ssh选项吗?在bashrc?中,我不记得了,我把这些选项放在了cap文件中,应该有包含
    ssh_选项的文件,可能在
    config/deploy.rb