2015-04-12 75 views
0

我有一個AWS微型實例,直到現在,使用ec2-user登錄到實例時都沒有問題。我更改了ec2用戶的一些權限(基本上刪除了它添加到的www組,並再次添加該組)。現在我被鎖定在實例之外。我得到的錯誤是:EC2 - 無法使用ec2-user登錄

斷開:不支持的認證方法可用(服務器發送:公鑰)

我檢查了以下,一切都似乎是在地方:

  1. 我的IP是在AWS安全組更新
  2. 我的密鑰(.ppk)是一樣的,我已經用了幾個月
  3. 我的安全組有80和442啓用

請幫忙...這真是困擾我大好時光!

+0

我想你的意思是443,而不是442? SSH默認使用端口22,它啓用? – David

回答

0

您收到來自SSH服務的錯誤信息,因此您可以確定這不是防火牆問題。

它很難確切地知道你做了什麼,但是你可能無意中打開了存儲允許的公鑰~/.ssh/authorized_keys的文件的訪問權限。該文件僅適用於非常有限的權限。

有一種方法可以從中恢復,但它確實涉及多個步驟。

  1. 開始一個新的實例,可以是微型的,它只能保持一點。
  2. 停止當前實例,分離根卷並將其附加到新實例。
  3. 掛載卷,修改authorized_keys文件的權限。
  4. 卸載並分離該卷,重新附加到原始實例。

如果一切設置正確,您的密鑰應該再次在您的現有實例上工作。

+0

感謝您的意見。最終我不得不開始一個嶄新的實例並將其複製。我估計老人弄得太亂了 – coderatlarge

0

不確定您是否從9個月看到此post,但它看起來像有人有類似的問題。如果您使用IAM,請確保您的內聯策略允許訪問EC2。

0

如果ec2-user以某種方式損壞,您可以添加一個額外的用戶。此方法不需要安裝音量,而是依靠修改EC2控制檯中的User Data

https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/

例如,您可以創建一個新的密鑰:

ssh-keygen -t rsa -C private.key -f private.key -q -N ""

然後使用以下User Data

Content-Type: multipart/mixed; boundary="//" 
MIME-Version: 1.0 

--// 
Content-Type: text/cloud-config; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; filename="cloud-config.txt" 

#cloud-config 
cloud_final_modules: 
- [scripts-user, always] 

--// 
Content-Type: text/x-shellscript; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; filename="userdata.txt" 

#!/bin/bash 
USER=additional-user # 1 
adduser $USER 
echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cloud-init 
mkdir /home/$USER/.ssh 
echo "ssh-rsa AAAAB3NzaC1yc2EAAA....A38MHe0KAzY9Ob private.key" >> /home/$USER/.ssh/authorized_keys # 2 
--// 
  1. 替換additional-user用的用戶名您的選擇
  2. 將雙引號內的內容替換爲您剛剛生成的private.key.pub內容。

然後,您應該能夠使用SSH連接實例:

chmod 600 private.key 
ssh -i private.key [email protected]<ec2 public ip> 

記得清理你User Data,使其不留在以後啓動運行。一旦ec2用戶再次工作,也取消配置其他用戶(或至少刪除其sudo訪問權限)。

有關詳細說明,請參閱:https://bitbucket.org/thorntechnologies/sftpgateway-public/wiki/Locked%20out%20of%20EC2%20instance