權限被拒絕(公鑰)。從本地 Ubuntu 到 Amazon EC2 伺服器的 SSH

權限被拒絕(公鑰)。從本地 Ubuntu 到 Amazon EC2 伺服器的 SSH

我有一個在 Amazon EC2 執行個體上的雲端中運行的應用程式實例,我需要從本地 Ubuntu 連接到它。它在一臺本地 ubuntu 和筆記型電腦上運行良好。Permission denied (publickey).當嘗試從 SSH 到 EC2 時,我收到此訊息不同的本地Ubuntu。

我認為 Amazon EC2 上的安全性設定可能存在問題,它限制了對一個執行個體的 IP 存取;或者可能需要重新產生憑證。

有誰知道權限被拒絕錯誤的解決方案?

答案1

在這種情況下要做的第一件事是使用 選項-vssh以便您可以查看嘗試了哪些類型的身份驗證以及結果是什麼。這有助於闡明情況嗎?

在您對問題的更新中,您提到「在另一個本地 Ubuntu 上」。您是否已將 ssh 私鑰複製到另一台機器上?

答案2

由於沒有明確提及,sshd 預設對authorized_keys檔案的權限非常嚴格。所以,如果authorized_keys可寫對於用戶以外的任何人或可以寫由使用者以外的任何人進行,它將拒絕進行身份驗證(除非 sshd 配置為StrictModes no

我所說的「可以寫」的意思是,如果任何父目錄對於使用者以外的任何人都是可寫的,則允許修改這些目錄的使用者可以開始修改權限,以便他們可以修改/替換authorized_keys。

此外,如果該/home/username/.ssh目錄不屬於用戶,因此用戶無權讀取金鑰,您可能會遇到問題:

drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh

請注意,jane 不擁有該.ssh文件。透過修復此問題

chown -R jane:jane /home/jane/.ssh

這些類型的檔案系統權限問題不會顯示出來ssh -v,它們甚至不會顯示在 sshd 日誌中 (!),直到您將日誌等級設為 DEBUG。

  • 編輯/etc/ssh/sshd_config。你想要一條LogLevel DEBUG可以在某處讀取的行。使用發行版提供的機制重新載入 SSH 伺服器。 (service sshd reload在 RHEL/CentOS/Scientific 上。)優雅的重新載入不會刪除現有會話。
  • 再次嘗試進行身份驗證。
  • 找出您的身份驗證設施日誌的位置並讀取它們。 (IIRC,/var/log/auth.log基於 Debian 的發行版;/var/log/secureRHEL/CentOS/Scientific。)

更容易找出偵錯輸出出了什麼問題,其中包括檔案系統權限錯誤。請記住將變更恢復到/etc/ssh/sshd_config完成後的狀態!

答案3

我收到此錯誤,因為我忘記添加-l選項。我的本機使用者名稱與遠端系統上的使用者名稱不同。

這並不能回答你的問題,但我來這裡是為了尋找我的問題的答案。

答案4

ssh -v比(當然在我看來)更容易閱讀的東西是tail -f /var/log/auth.log。在嘗試連接時,它應該在您嘗試連接的伺服器上運行。它將以純文字形式顯示錯誤。

這幫助我解決了我的問題:

不允許來自 xx.yy.com 的使用者 [使用者名稱],因為AllowGroups 中沒有列出任何使用者群組

相關內容