我安裝了 Ubuntu 22.04.1,並使用 pubkey + 私鑰驗證登入 ssh。
這是我採取的步驟
- 我首先在我的 Mac 上建立了一個金鑰對。
- 然後我進入伺服器並編輯
/etc/ssh/sshd_config
以添加用於 ssh 登入的新端口 - 在防火牆 (UFW) 中開啟該連接埠並關閉預設的 22。
- 我做了一個
ssh-copy-id -i /path/to/public/key root@host
將公鑰複製到伺服器上的操作。 - 然後
/etc/ssh/sshd_config
再次禁止密碼驗證 - 重新啟動 sshd 並測試與 root 的連線。連接工作得很好。
- 我重新啟用了密碼身份驗證,並使用我的 sudo 用戶(不是 root)之一在新連接埠上使用使用者名稱+密碼測試了 ssh。連接工作得很好。
- 我將
ssh-copy-id -i /path/to/public/key user@host
公鑰複製到該特定使用者的 .ssh/authorized_keys 中的伺服器上。該過程未返回任何錯誤,並報告複製了一把鑰匙。我登入伺服器並仔細檢查了authorized_keys文件,密鑰確實在那裡。 - 然後
/etc/ssh/sshd_config
再次禁止密碼驗證 - 重新啟動 sshd 並測試與使用者的連線。這就是我遇到問題的地方使用者無法登入
Permission denied (publickey)
。當我重新啟用密碼身份驗證時,我可以正常連接,但仍然沒有金鑰。只需一個標準的使用者名稱+密碼連線。
由於我對 root 使用者使用完全相同的組合,因此對金鑰對進行了測試。我想停用 Permitrootlogin 但不能。有任何想法嗎?
編輯:我遵循@Jos 的建議,並使用 root 和 user 進行了詳細的登入。這是 2 個結果。我已經過濾掉了所有敏感資訊和金鑰、IP 等,並將結果轉換為螢幕截圖:
和使用者(無法連線):
編輯:@steeldriver 建議執行 namei 檢查authorized_keys 檔案是否太寬鬆。這是輸出:
| => namei -l ~/.ssh/authorized_keys
f: /home/spitixorismesiti/.ssh/authorized_keys
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxrwx--- spitixorismesiti spitixorismesiti spitixorismesiti
drwx------ spitixorismesiti spitixorismesiti .ssh
-rw------- spitixorismesiti spitixorismesiti authorized_keys