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