按操作步驟操作不行的最可能原因是:文件權限,不論是a機還是要訪問的b機的文件的權限都要改成對應的700,600;必須嚴格是這個權限,否則會出現設置免密fail的情況。
serverA 免密碼登錄到 serverB
機器A 向 機器B 進行免密碼登陸
step1:
在機器A中生成 私鑰和公鑰:
命令:ssh-keygen -t rsa,一路回車就行,如果需要passphrase密碼,自行輸入就行,一路回車passphrase密碼為空
此時在 ~/.ssh/ 目錄下生成了公鑰(id_rsa.pub)和私鑰(id_rsa)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
step2:
把機器A的公鑰(id_rsa.pub)復制到機器B ~/.ssh/authorized_keys 文件里,兩種常用方法
方法1:
scp ~/.ssh/id_rsa.pub username@host:/home/B/id_rsa.pub //此時scp需要輸入 登錄機器B username用戶的密碼 //然后進入機器B內把 /home/B/id_rsa.pub 文件內容加寫進 ~/.ssh/authorized_keys 文件: cat /home/B/id_rsa.pub /home/B/.ssh/authorized_keys
方法2:
//在機器A中使用 ssh-copy-id 把公鑰加寫到機器B的 ~/.ssh/authorized_keys 文件 ssh-copy-id username@host //執行后輸入機器B username用戶的密碼,效果和方法1一樣
step3:
修改機器B ~/.ssh/authorized_keys 文件的權限:
chmod 600 ~/.ssh/authorized_keys
此時如果機器B沒有~/.ssh 目錄需要手動創建
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
step4:
此時機器A可以進行免驗證登錄 機器B
ssh username@host
參閱網上很多方法后,發現步驟都差不多,但是卻屢屢失敗,設置完后仍然要輸入密碼,后面發現了是被登錄機器的文件權限問題:
//用戶權限 chmod 700 /home/username //.ssh文件夾權限 chmod 700 ~/.ssh/ // ~/.ssh/authorized_keys 文件權限 chmod 600 ~/.ssh/authorized_keys
還有可能這個文件內容被注釋了(改成下圖的狀態):
vi /etc/ssh/sshd_config
1 如果還是無法登陸,可能是Linux禁用了root賬戶ssh登陸,解決方法:
編輯配置文件
vim /etc/ssh/sshd_config
2 修改 PermitRootLogin
后面的
no 為 yes,並且去掉前面的注釋符,同時可以限制失敗次數
注意: 這個失敗次數是對所有用戶都起作用的。
#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes MaxAuthTries 3 #MaxSessions 10
3 重啟 sshd 服務:
systemctl restart sshd.service