權限被拒絕(公鑰)。從本地 Ubuntu 到 Amazon EC2 伺服器的 SSH
我有一個在 Amazon EC2 實例上的雲中執行的應用程序實例,我需要從本地 Ubuntu 連接到它。它可以在一臺本地 ubuntu 和筆記型電腦上正常工作。我
Permission denied (publickey).
在嘗試從不同的本地 Ubuntu SSH 到 EC2 時收到此消息。我認為 Amazon EC2 上的安全設置可能存在問題,它限制了對一個實例的 IP 訪問;或者可能需要重新生成證書。
有誰知道 Permission denied 錯誤的解決方案?
在這種情況下要做的第一件事是使用
-v
選項 tossh
,這樣您就可以看到嘗試了哪些類型的身份驗證以及結果是什麼。這有助於了解情況嗎?在您對問題的更新中,您提到“在另一個本地 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
完成後!