1. 程式人生 > 其它 >AWS EC2 例項 SSH 無法登入故障

AWS EC2 例項 SSH 無法登入故障

文章連結

故障表現

在使用 jumperver 登入 AWS ec2 例項的時候發現 ssh 配合祕鑰登入的時候無法登入,
具體報錯如下:

ssh -i /path/xx.pem [email protected]  
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

問題排查過程

在發現無法登入的第一時間等了AWS 平臺檢視底層監控是否正常
檢視到底層硬體工作正常,並沒有觀察到異常報錯。

通過檢視業務服務,發現業務服務並沒有收到影響。
那就說明,伺服器是沒有問題的,只是登入認證出了問題。既然服務沒有問題,接下來就慢慢排查就,就不著急了。
接著,嘗試用 aws

ssm (Amazon Systems Manager)嘗試登入,發現能夠使用 ssm 登入。
再次回到跳板機,執行 telnet 10.0.11.190 22 埠是通的。排除網路埠問題。
檢視 ssh 登入日誌

ssh -i /path/xx.pem [email protected]  -vvv

檢視 secure 日誌

tail -f /var/log/secure

問題解決

經過檢視日誌,總結如下:

1

當前是從跳板機,以ssh的方式連線到故障主機,但是在連線過程中遇到如下所示報錯:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

從ssh -vvv的debug日誌來看,ssh client端傳送了認證請求,但是ssh server端並沒有完成認證過程,導致permission denied報錯產生。

2

故障主機配置了SSM agent,並且可以通過session manager開啟。
在這個基礎上,在例項的/var/log/secure檔案中看到如下報錯內容:

authentication refused: bad ownership or modes for directory /home/ec2-user/

這個報錯的意思是說,/home/ec2-user/ 目錄的owner或者mode存在一些問題。
經過檢視,/home/ec2-user/

目錄配置的是777的許可權,進而導致的認證失敗。

將其修改為700後,問題得到解決,可以ssh登入到故障主機。

為什麼會有777的許可權呢?

為何會將 /home/ec2-user/ 目錄下所有內容修改為 777 呢?
經過登入 Jumoserver 的審計發現,一名開發人員將 /home/ec2-user/ 許可權改為了 777 原因是通過 Jumpserver 上傳檔案的時候沒有許可權,然後開發就自己將目錄給了 777的許可權。
文章連結