2011-01-20 145 views
233

我剛剛註冊了Amazon的新Elastic Beanstalk產品並非常喜歡它。我無法弄清楚的是如何SSH到一個Beanstalk實例。我沒有私鑰,因爲Beanstalk代表我創建實例。想法?SSH到Elastic Beanstalk實例

感謝, 諾

+0

因此,一旦我終於登錄了,我該如何到達我推送我的git repo的文件夾? – Evolve 2013-12-03 10:24:52

+2

好吧,如果你使用ELB CLI的新v3,你可以做'eb ssh` – 2014-11-22 12:39:54

+0

看起來上面的答案有些過時。亞馬遜現在有一個很好的文檔來說明如何去做。按照上述有關如何創建密鑰對的建議。然後按照這個:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.ec2connect.html祝你好運! – 2014-01-22 07:08:48

回答

26

我一直在玩這一點。

  1. 轉到您的彈性魔豆的服務標籤
  2. 您的應用程序概述轉到動作 - >編輯配置
  3. 添加一個鍵的名稱,因爲它出現在你的EC2選項卡(同一區域)的該服務將被重新啓動使現有的密鑰對框,然後按應用更改

使咖啡5分鐘

在對同一區域的EC2標籤,你會看到你的新的運行實例。 ssh作爲ec2-user使用在3 中添加的密鑰的公共dns名稱,例如, ssh [email protected]

+5

添加「ec2-user」部分是我的問題......這應該與上面的答案合併;)。 – 2013-06-14 13:00:36

381

我發現它是一個兩步過程。這假定您已經設置了一個密鑰對來訪問相關區域中的EC2實例。

配置安全組

  1. 在AWS控制檯,打開EC2選項卡。
  2. 選擇相關區域並點擊安全組。
  3. 如果您在該區域中啓動了Elastic Beanstalk實例,則應該有一個elasticbeanstalk-default安全組。
  4. 編輯安全組以添加SSH訪問規則。以下將鎖定它以僅允許來自特定IP地址的入口。

    SSH | tcp | 22 | 22 | 192.168.1.1/32 
    

配置彈性青苗應用

  1. 如果您還沒有作出一個密鑰對的是,環境通過單擊EC2選項卡下安全組密鑰對做一個。
  2. 在AWS控制檯中,打開Elastic Beanstalk選項卡。
  3. 選擇相關區域。
  4. 選擇相關環境
  5. 在左窗格中選擇配置。
  6. 選擇實例。
  7. 在「EC2密鑰對:」下,在Existing Key Pair字段中選擇密鑰對的名稱。

實例重新啓動後,您需要從AWS Console EC2實例選項卡或通過API獲取主機名。然後您應該能夠SSH到服務器上。

$ ssh -i path/to/keypair.pub [email protected] 

注意:添加一個密鑰對環境的配置,各實例的終止保護必須關閉的青苗會嘗試用密鑰對終止當前的情況下,開始新的實例。

注意:如果某些內容不起作用,請檢查Beanstalk應用程序/環境中的「Events」選項卡,並查明出了什麼問題。

+26

這個答案比其他答案多出兩倍票數;技術嚴謹;並且非常清楚。它有什麼問題?爲什麼不被接受? – 2012-05-15 04:34:15

+4

即使您按照上述說明操作,但如果您收到錯誤「Permission denied(publickey)」,以下內容可能會解釋原因:如果您的EB設置啓動多個EC2實例,則必須檢查其中哪些獲取了​​關聯對用它。您只能使用密鑰對SSH進入實例。您可以檢查EC2實例菜單中的屬性以找出結果。 – 2012-10-10 08:22:52

+0

配置我的Beanstalk應用程序以包含來自EC2的密鑰對時,它表示「***對選項EC2KeyName設置的更改不會立即生效,您現有的每個EC2實例都將被替換,您的新設置將生效。 **「......但是,我沒有看到我的任何EC2實例已經改變......等了大約10分鐘。 EC2實例的狀態仍處於綠色運行信號。我已經多次刷新實例,但「密鑰對名稱」的值仍然爲空。等待大約10分鐘....我錯過了什麼? – 2013-02-23 19:31:58

28

EC2實例的「實例操作」菜單中有一個方便的「連接」選項。它將爲您提供確切的SSH命令,以使用正確的實例url進行執行。 Jabley的整體說明是正確的。

40

我在2013年8月與Linux客戶端和一個簡單的AWS魔豆安裝(單一EC2實例)的經驗如下(基於以上社區維基)

配置安全組

  1. 在AWS控制檯中,選擇EC2進入EC2儀表板
  2. 通過單擊左側面板中的實例發現EC2實例所屬的安全組,然後選擇要連接的實例(在我的情況下只有一個 - 稱爲默認環境)。詳細信息顯示在頁面的底部 - 您應該看到安全組的字段 - 記下名稱 - 在我的情況下是「awsweb ...」。
  3. 從左側面板選擇安全組。
  4. 選擇awsweb...安全組,並且詳細信息應顯示在頁面底部
  5. 選擇入站選項卡,然後從「創建新規則」下拉列表中選擇SSH。插入本地計算機的IP地址/ CIDR(您想要連接),例如192.168.0.12/32,然後單擊添加規則和應用規則更改。

創建公私密鑰對

  1. 從EC2儀表板從左側面板中選擇密鑰對
  2. 點擊密鑰對(頂部),然後輸入一個名稱,如MYNAME-鍵 - pair-myregion或任何您喜歡的有效密鑰名稱。
  3. 確認並接受從瀏覽器下載的私鑰,例如將其保存到您的主目錄或您喜歡的任何地方。確保目錄只有你的寫權限。

副公私密鑰對彈性青苗EC2服務器

  1. 一個公共 - 私人密鑰對添加到彈性青苗EC2 實例做:服務 - >彈性魔豆 - >我的應用 - >默認 環境帶您到默認環境(一個在那裏你 上傳應用程序)
  2. 點擊配置(左側面板),然後在齒輪/ COG 與「實例」
  3. 相關
  4. 一頁題爲「服務器」顯示
  5. 選擇從EC2密鑰對您的預建的關鍵標準桿,並做保存
  6. 顯示一些警告信息,這樣就再次保存。

連接到AWS EC2實例使用SSH

  1. 在終端會話切換到包含您的私鑰(.PEM文件)的目錄。
  2. 如果你有幾次這樣做,你應該做一些關於.ssh/known_hosts,如果你有一個如重命名。否則,您可能會收到有關主機身份已更改的錯誤。
  3. 務必:SSH -i ./myname-key-pair-my-region.pem [email protected]

好運

-2

我以前也遇到過同樣的問題。我想使用密鑰文件,但亞馬遜說某處不能將密鑰文件添加到現有的EC2服務器。對於第一個Beanstalk應用程序,Amazon爲您預配置應用程序。您需要創建一個新的應用程序,並且可以將運行Beanstalk應用程序的EC2服務器配置爲使用舊的pem文件(如果使用Putty,則爲ppk),或者可以創建一個新文件。現在你應該可以通過SSH。

enter image description here

然後配置,然後再刪除舊的應用程序。

2

使用當前UI爲ElasticBeanstalk ec2實例設置密鑰對的方向爲: 警告:這將需要更新ElasticBeanstalk應用程序中的EC2實例。 注意:在此之前,您需要在EC2儀表板中創建一個密鑰對。

1)在AWS Dashboard中,選擇ElasticBeanstalk服務 2)選擇要使用的應用程序。 3)選擇'配置' 4)在'實例'配置框中選擇齒輪(設置)圖標。 5)這將帶您進入一個名爲「服務器」的頁面,您可以在其中使用所需的密鑰對更新'EC2密鑰對'下拉字段並選擇'保存'。

有一點需要注意的是,這可能不適用於具有多個實例的應用程序(但我相信這很可能如果它們全都在與密鑰對相同的區域中)。

94

Elastic beanstalk CLI v3現在支持直接SSH,命令爲eb ssh。例如。

eb ssh your-environment-name 

不需要設置找到EC2實例地址的安全組的麻煩。

還有這個酷技巧:

eb ssh --force 

這會暫時強制端口22開放爲0.0.0.0,並保持開放,直到你exit。這混合有點的最佳答案的好處,沒有麻煩。您可以臨時授予除您以外的其他人的調試權限和其他權限。當然,你仍然需要將他們的公鑰上傳到主機,以便他們有權訪問。一旦你這樣做(只要你在裏面eb ssh),其他人可以

ssh [email protected] 
3

您需要使用其公有IP地址直接連接到ec2實例。您無法使用elasticbeanstalk網址進行連接。

您可以在ec2控制檯中查找實例IP地址。

您還需要確保端口22已打開。默認情況下,當ssh連接完成後,EB CLI關閉端口22。您可以調用eb ssh -o在ssh會話完成後保持端口打開狀態。

警告:您應該知道彈性beanstalk可以隨時替換您的實例。狀態不能保證你的任何彈性beanstalk實例。它可能更好地使用ssh進行測試和調試,因爲您修改的任何內容都可以隨時消失。

相關問題