我在 EC2 執行個體上使用 chmod 破壞了 SSH — 如何修正?

我在 EC2 執行個體上使用 chmod 破壞了 SSH — 如何修正?

我已經運行 Amazon EC2 執行個體一段時間了,最近意外地遞歸地更改了資料夾的權限/所有權。我無法再透過 SSH 存取該實例。我不記得確切的命令是什麼。然後,我使用此問題的答案中提供的技術重新獲得了基本存取權限:https://serverfault.com/questions/234061/re-gaining-root-access-to-an-ec2-ebs-boot-image

不過,我不知道該如何處理第 3 步(「修改它」)。我不知道要修改什麼,並且在嘗試設定正確的權限時,我也失去了對許多恢復 EC2 執行個體的存取權限!

作為參考,我使用 Win7 和 Putty/WinSCP 連接到實例。當我嘗試透過 SSH 登入實例時,Putty 顯示以下 2 個錯誤:

伺服器拒絕我們的金鑰

沒有可用的支援的身份驗證方法(伺服器發送:公鑰)

我確信我的實例使用了正確的使用者名稱、IP 位址和私鑰。

任何幫助將非常感激。

答案1

解決方案,正如伺服器故障帖子所描述的,是將您的 EBS 安裝到您可以連接的另一個(新)實例。 EBS 只是那裡的一個驅動器,您將能夠遠端連接到該實例,因為它是新的。然後你就可以恢復sudo chown你最初破壞的目錄了。

  1. 從 AWS 主控台停止(而不是終止)您的第一個實例

  2. 從 AWS 控制台建立新的 Linux 實例

  3. 從第一個實例分離 EBS,然後再次將其附加到新實例從 AWS 主控台。將其命名為:/dev/sdm(在EBS 控制台上,您將看到附加的捲名為sdm 但在Linux 上映射到xvdm,因此它與下面的命令匹配。但請隨意使用另一個字母並調整下一個命令。

  4. 透過 SSH 連接到新實例並執行:

    sudo mkfs -t ext4 /dev/xvdm
    sudo mkdir /old-ebs
    # optional, in case this is a bit more permanent
    sudo echo "/dev/xvdm        /old-ebs     auto    noatime,noexec,nodiratime 0 0" >> /etc/fstab
    sudo mount /dev/xvdm /old-ebs
    
  5. 現在您可以 (sudo) 存取您的舊 EBS,並且可以存取chown您需要的目錄。如果您迷路了,這裡的一個提示是從新實例複製權利。

  6. 完成後,您可以停止新實例,將 EBS 與其分離並將其重新附加到第一個實例,然後啟動它。

上面的第三個控制台命令是可選的,用於添加已安裝的捲,以便/etc/fstab在每次重新啟動時自動安裝它。

相關內容