簡體   English   中英

亞馬遜EC2 + Capistrano + Git:權限被拒絕(publickey)

[英]Amazon EC2 + Capistrano + Git: Permission denied (publickey)

當我使用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 ,但它仍然無效。

這有什么問題?

要使用ssh代理:

ssh_options[:forward_agent] = true

要使用你的pem文件:

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

在本地啟用代理

$ ssh-add

你每次都要執行這個命令,我不知道“每次”的范圍,我每次在終端上用echo ssh-add >> ~/.bashrc打開一個新選項卡時都添加了ssh-add運行,具體取決於您的操作系統和配置。

據我所知,這個過程是這樣的:

  1. 你當地有一個ssh-agent
  2. 您使用pem文件連接到正在部署的服務器,就像使用ssh ,但這次是通過Capistrano
  3. 遠程服務器使用您的代理使用您的密鑰來檢查部署機器內的git repo。

您可以首先使用SSH連接到EC2實例,然后使用EC2實例上安裝的ssh密鑰從EC2實例克隆您的github存儲庫嗎?

對於所有這些分布式工作流程,事情可能會有點令人困惑,所以讓我試着弄清楚你做錯了什么。

您在Github上安裝的id_rsa.pub與私鑰對應。 通常,這是在~/.ssh/id_rsa這個密鑰對允許~/.ssh/id_rsa的持有者SSH到github。

.ssh/authorized_keys是SSH服務器配置。 authorized_keys包含公鑰(即id_rsa.pub ),以使SSH服務器能夠接受來自具有相應私鑰的計算機的傳入連接。 authorized_keys文件與克隆問題無關。

EC2實例正在嘗試聯系Github存儲庫,以便從Github克隆存儲庫,並且失敗。 EC2實例需要配置一個私鑰,以匹配該帳戶的相應公共(Github)密鑰。

在EC2實例上生成新的密鑰對,並將新密鑰對中的公鑰添加到您的Github帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM