1. 程式人生 > 其它 >ssh免密登陸失敗原因總結

ssh免密登陸失敗原因總結

轉自:https://blog.csdn.net/zhangmingcai/article/details/95734889

1. SSH公鑰認證(免密碼)配置
登入到本機伺服器A,切換到響應的作業系統使用者,執行命令,生成祕鑰檔案【按照提示直接回車】
ssh-keygen -t rsa
將公鑰傳送到對端伺服器B上面【user@host為對端伺服器帳號及IP】
ssh-copy-id -i ~/.ssh/id_rsa.pub  user@host
然後在本機伺服器A上ssh命令驗證是否免密碼登入生效【user@host為對端伺服器帳號及IP】
ssh user@host

2. SSH免密碼登陸的基本原理

SSH(Secure Shell)是一種通訊加密協議,加密演算法包括:RSA、DSA等

3. SSH免密碼失敗原因定位分析

a) 伺服器B上.ssh目錄的許可權必須是700

b) 伺服器B上.authorized_keys檔案許可權必須是600或者644

c) 伺服器B上使用者家目錄檔案許可權必須是700(使用者目錄許可權也以可為755,就是不能是77x。),比如使用者名稱是aischang,則/home/aischang這個目錄許可權必須是700

如果不是700,在伺服器A上檢視/var/log/secure檔案會報錯

原因sshd為了安全,對屬主的目錄和檔案許可權有所要求。如果許可權不對,則ssh的免密碼登陸不生效。

d) 伺服器B上SELinux關閉為disabled,可以使用命令修改setenforce 0 ,檢視狀態的命令為getenforce或者 檢視/etc/selinux/config 檔案中是否是disabled

e) 有可能是StrictModes問題

編輯 vi /etc/ssh/sshd_config

找到#StrictModes yes改成StrictModes no

f) 有可能是PubkeyAuthentication問題

編輯 vi /etc/ssh/sshd_config

找到PubkeyAuthentication改成yes

如果還不行,可以在伺服器A上用ssh -vvv 機器B使用者名稱@機器B的ip 檢視詳情,根據輸出內容具體問題具體分析了。