2013-05-03 204 views
2

當我部署一個Rails應用程序到Amazon EC2服務器使用Capistrano的,我得到亞馬遜EC2 + Capistrano的+混帳:權限被拒絕(公鑰)

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

這是什麼問題?

+0

嘗試'chmod 400 id_rsa'。 – 2013-05-03 18:27:48

回答

1

您可以先使用SSH連接到您的EC2實例,然後使用安裝在EC2實例上的ssh密鑰從EC2實例克隆您的github repo?

在所有這些分佈式工作流程中,事情會變得有點令人困惑,所以讓我試着去解決你做錯了什麼。

您在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帳戶。

5

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

你能告訴我在哪裏添加這個ssh選項嗎?在bashrc中? – kamal 2015-05-20 13:10:58

+0

讓我編輯答案 – juanpastas 2015-05-20 16:58:55

+0

我不記得了,我把這些選項放在cap文件中,應該有包含'ssh_options'的文件,也許在'config/deploy.rb'中 – juanpastas 2015-05-20 17:02:10

相關問題