Vincent Ko

VK's Blog

SSH 免密登錄故障排查指南

正常情況下,按照密鑰對,並將公鑰加入到服務其的 ~/.ssh/authorized_keys 中即可實現免密登錄。

但也會意外情況,最近遇到了即使確認配置無誤但仍然需要輸入密碼的問題,這裡對排查過程進行記錄,把所有可能的情況進行梳理。

無法免密登錄可能的原因#

1. 文件和目錄權限問題#

檢查 user 用戶的 ~/.ssh 目錄和 ~/.ssh/authorized_keys 文件權限,不合理的權限配置可能會被 SSH 服務拒絕。

因此,這裡必須將 ~/.ssh 設置為 700,將 ~/.ssh/authorized_keys 設置為 600

# 在遠程服務器上的目標用戶的home(~指向的地址)執行
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

~ 會指向當前用戶的 home 目錄,如果是 root 用戶想要指定 user 的對應配置文件及目錄,需要使用絕對路徑。 一般情況下,user 目錄的絕對路徑是 /home/user/; 綁定了數據盤,也有可能在 /data/home/user,視具體情況而定。

2. SSH 配置文件#

這個可能是容易被忽略的問題,一般情況下 SSH 配置不會有問題,但是如果出現了確認以上配置無誤還是無法連接時,要檢查下 SSH 配置文件 etc/ssh/sshd_config,確保一下設置是啟用的:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

這兩項分別開啟了公鑰認證功能和公鑰文件的位置,修改完之後,需要重啟 sshd 服務

sudo systemctl restart sshd

根據系統,重啟命令可能不同,如果提示 systemctl 找不到,可以嘗試 sudo service sshd restart

3. 用戶 home 目錄的權限問題#

如果要使用 user 免密登錄,必須要確保 user 的 home 目錄不對其他用戶開放權限 。因為如果其他用戶可以寫 user 的 home 目錄,SSH 可能會拒絕登錄,因為這個認為是不安全的,因此 home 目錄應該限制為只有自己可以寫入。

755 /data/home/user

日誌分析#

如果以上原因都已排查,還是無法免密登錄,可以使用 SSH 服務的日誌文件,可能會有登錄失敗的相信信息,幫助進行診斷。對於 systeme 系統(包含 Fedora、Ubuntu、Debian、CentOS/RHEL 7 及更高版本),可以使用以下命令:

sudo journalctl -u sshd

比如我這邊在排查時,發現日誌內容如下:

-- Logs begin at Tue 2024-03-19 10:34:54 CST, end at Thu 2024-03-21 10:19:04 CST. --
Mar 21 10:12:26 VMOS sshd[767024]: DBG|operate_common.h|55|MakeNslcdInteraction|action=1001, interaction ok
Mar 21 10:12:26 VMOS sshd[767024]: DBG|operate_common.h|55|MakeNslcdInteraction|action=5003, interaction ok
Mar 21 10:12:26 VMOS sshd[767024]: Authentication refused: bad ownership or modes for directory /data/home/user
Mar 21 10:12:26 VMOS sshd[767031]: DBG|operate_common.h|55|MakeNslcdInteraction|action=80003, interaction ok
Mar 21 10:12:31 VMOS sshd[767031]: pam_tsso(sshd:auth): Authentication failure for user from xx.xx.xx.xx

可以看到這句 Authentication refused: bad ownership or modes for directory /data/home/user,即 user文件夾的 modes (權限)是不正確的,拒絕了 SSH 訪問。

按照上面第三條所示,修改 /data/home/user的權限,即可完美解決

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。