Linux

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

  • August 11, 2021

我有一個在 Amazon EC2 實例上的雲中執行的應用程序實例,我需要從本地 Ubuntu 連接到它。它可以在一臺本地 ubuntu 和筆記型電腦上正常工作。我Permission denied (publickey).在嘗試從不同的本地 Ubuntu SSH 到 EC2 時收到此消息。

我認為 Amazon EC2 上的安全設置可能存在問題,它限制了對一個實例的 IP 訪問;或者可能需要重新生成證書。

有誰知道 Permission denied 錯誤的解決方案?

在這種情況下要做的第一件事是使用-v選項 to ssh,這樣您就可以看到嘗試了哪些類型的身份驗證以及結果是什麼。這有助於了解情況嗎?

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

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

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

此外,如果/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

請注意,簡不擁有該.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/secure關於 RHEL/CentOS/Scientific。)

更容易找出包含文件系統權限錯誤的調試輸出出了什麼問題。請記住將更改還原到/etc/ssh/sshd_config完成後!

引用自:https://serverfault.com/questions/39733