上一篇博文介紹了使用Putty免密碼登錄,我后面試了另一台虛擬機,結果putty顯示錯誤server refused our key(在linux下則表現為仍需要輸入密碼),搜索了下,很多人都遇到這個問題,大致有三種原因:
1、.ssh文件夾權限錯
.ssh 以及其父文件夾(root為/root,普通用戶為Home目錄)都應該設置為只有該用戶可寫(比如700)。
以下為原因:
ssh服務器的key方式登錄對權限要求嚴格。對於客戶端: 私鑰必須為600權限或者更嚴格權限(400), 一旦其他用戶可讀, 私鑰就不起作用(如640), 表現為系統認為不存在私鑰
對於服務器端: 要求必須公鑰其他用戶不可寫, 一旦其他用戶可寫(如660), 就無法用key登錄, 表現為:Permission denied (publickey).
同時要求.ssh目錄其他用戶不可寫,一旦其他用戶可寫(如770), 就無法使用key登錄, 表現為:Permission denied (publickey).
2、SElinux導致
密鑰文件不能通過SElinux認證,解決方法如下:
1
|
# restorecon -R -v /home #root用戶為/root
|
我遇到的就是這種情況,找了好久還找到是這個原因,因為是新裝的虛擬機,SElinux還沒關閉。
這篇博文詳細得說明了原因:http://www.toxingwang.com/linux-unix/linux-basic/846.html
3、sshd配置不正確
正確配置方法如下:
/etc/ssh/sshd_config 1、找到 #StrictModes yes 改成 StrictModes no (去掉注釋后改成 no) 2、找到 #PubkeyAuthentication yes 改成 PubkeyAuthentication yes (去掉注釋) 3、找到 #AuthorizedKeysFile .ssh/authorized_keys 改成 AuthorizedKeysFile .ssh/authorized_keys (去掉注釋) 4、保存 5、/etc/rc.d/init.d/sshd reload 重新加載