2016-01-07 42 views
0

我本質上是AWS noob。如何在SSH密鑰泄露或丟失時保護AWS EC2實例

我讓開發人員設置了一個EC2實例,並使用負載平衡器來託管基於node.js的API。他現在已經離開公司,但他仍然有私鑰登錄,如果他想的話。我想改變鑰匙。

從我已閱讀的內容中,我需要重新啓動實例以獲取新的密鑰對。但是,如果我這樣做,會丟失所有節點包和其他已安裝在當前實例上的SW?負載平衡器會發生什麼?我是否需要更新我的DNS信息以指向新的IP?

(一旦就位,這陣子我會創建多個密鑰對的開發者使用。)

感謝, 史蒂夫

編輯:是的,我確實有私鑰,可以做的一切我需要。我只是想確保他不再擁有訪問權限。

+0

你還有權限訪問該實例嗎?只需創建一個新的密鑰對並刪除舊密鑰對 - 在Linux級別。如果您仍然可以訪問該實例,則無需在AWS級別上執行任何操作。 – mickzer

+0

正確的答案取決於您是否擁有用於啓動實例的密鑰對的私鑰。如果您丟失了私鑰,並且原始用戶沒有提供給您,則無法登錄:您已失去對此實例的控制權。你有什麼辦法登錄到實例嗎? –

+0

開發者是否可以爲您提供私鑰?這將大大簡化事情。 –

回答

0

所以,我已經解決了這個問題我自己,我張貼了我的情況下,這樣做是可以幫助其他人。

  1. 在我的本地機器,我做了一個新的2048位RSA密鑰對(一對新的也可以在AWS可以生成)
  2. 導入亞馬遜控制檯新的公開密鑰。
  3. 創建運行實例的AMI。
  4. 啓動該AMI的新(ubuntu linux)實例,並將其指向 新登錄的上載公鑰。
  5. 實例啓動後,根據需要更新Load Balancer或DNS條目 以指向新實例。
  6. 啓動服務器要運行的任何軟件。
+1

您是否必須重新安裝新實例上的所有軟件?你提到不想在你原來的問題中這樣做。我建議的步驟可以起作用,並且這可以防止您不得不從頭開始重新安裝所有軟件,重新配置ELB等。 –

+0

不,我沒有。 AMI是磁盤的映像,因此可以捕獲指向該機器的確切配置。在另一種情況下重新啓動AMI時,所有內容都與之前完全一樣。 – gearhead

0

您可以創建一個新的密鑰對,而無需創建一個新的EC2實例http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair

它仍然看起來像你需要啓動EC2的一個新實例(這將創建一個新的密鑰),但如果你使用同一個卷(s)或快照創建重複的卷,你不應該重新加載任何軟件。 https://forums.aws.amazon.com/message.jspa?messageID=245314

至於DNS,我會指出它的負載平衡器,這樣你可以添加/刪除池中的服務器沒有DNS更改。否則,請將Elastic IP分配給服務器,這樣您就可以將Elastic IP移動到下一臺服務器,而無需每次都更改DNS。移動彈性是即時的,其中DNS需要時間來複制以粗略網絡。希望有所幫助。

+0

您還可以創建AMI(Amazon Machine Image)以用於基於現有節點創建新的EC2。 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html –

+0

除非您使用新密鑰重新安裝新實例的堆棧,否則無法解決如何更改現有「受損」密鑰。實例將保持妥協,直到在該實例上生成並安裝新密鑰。在現有實例上創建的任何AMI都將包含舊密鑰。 –

+0

好點。謝謝。 –

5
  1. 將當前實例的AMI用於備份目的。這將重啓實例,但會保留現有的IP。你不需要從ELB中刪除它。如果您在更改密鑰後無法重新連接,則可能需要此AMI。
  2. 以root用戶身份登錄現有密鑰。
  3. 從貝,運行以下命令:
  4. $ ssh-keygen -t rsa -b 2048 -f user - 這會產生一個新的密鑰對
  5. $ sudo su - - 如果需要,
  6. $ cp /home/ubuntu/.ssh/authorized_keys /home/ubuntu/.ssh/authorized_keys.bak - 備份現有公鑰
  7. $ mv user.pub /home/ubuntu/.ssh/authorized_keys - 這將替換現有的公共在關鍵的authorized_keys文件
  8. $ chmod 600 /home/ubuntu/.ssh/authorized_keys - 在文件
  9. 複製私有密鑰更改權限(文件名爲美國呃)從$ ssh-keygen命令生成到您的本地機器並從實例中刪除它。
  10. 用新的私鑰連接到實例進行確認。重要提示:保持現有ssh會話處於打開狀態,並使用新密鑰創建新會話。

如果您在第10步有任何問題,仍然可以訪問現有會話進行故障排除。

至於清理,請確保並從AWS控制檯中刪除舊的密鑰對,並使所有憑據IF(!)無效,以使現有服務不需要運行。如果您授予對AWS控制檯的開發者權限,則應重置這些憑據。

注意:這些步驟假定Ubuntu安裝。如果使用的是其他Linux類型,使用正確的用戶名AWS更換\ubuntu

Amazon Linux: ec2-user 
Ubuntu ubuntu 
Debian admin 
RHEL 6.4 ec2-user 
RHEL 6.3 root 
+0

很好的幫助。謝謝你,羅德里戈!所有步驟都有意義,但是,當我嘗試使用新密鑰登錄時,仍會提示輸入「id_rsa.pub」的密碼,但這不是我生成和複製密鑰的名稱。我在這裏錯過了一步嗎? – gearhead

+0

你在Ubuntu嗎? –

+0

是的。這是一個Ubuntu實例 – gearhead