linux免密登錄ssh驗證配置方法及常見錯誤解決


目標:從服務器A免密登錄服務器B

【配置方法】

1.在服務器A生成密鑰文件,直接使用以下命令:

ssh-keygen

中間遇到輸入內容一路回車即可,完成后會在 ~/.ssh 目錄下生成兩個文件:id_rsa(私鑰文件)和 id_rsa.pub(公鑰文件,在服務器B要用到的)

 

2.登錄服務器B,編輯~/.ssh/authorized_keys文件,將服務器A里的~/.ssh/id_rsa.pub內容復制進去保存,並授予權限644。另外~/.ssh目錄授權700

vim ~/.ssh/authorized_keys
chmod 644 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

如果~/.ssh目錄不存在,請手動創建,命令為:mkdir ~/.ssh

或者直接用在服務器A上用ssh-copy-id命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@服務器B地址

其中 -i 參數是指定公鑰文件

完成以上兩步就可以實現了,如果遇到問題無法連接,請繼續往下看:

 

【常見問題】

1.服務器B沒打開公鑰登錄權限

解決方法:編輯/etc/ssh/sshd_config文件,注意以下幾項的值:

PermitRootLogin yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

編輯完保存,重啟sshd服務(ubuntu是ssh ,centos是sshd)

(這些值其實也是默認的,默認也是開啟的,如果連不上還是需要檢查下)

 

2.服務器B目錄和文件權限

解決方法:檢查並設置以下權限

~/.ssh/  700

~/.ssh/autorized_keys  644

 

3.服務器B開啟了selinux

解決方法:使用以下命令關閉

setenforce 0

並且編輯配置文件(永久關閉)

vim /etc/selinux/config

改變里面的值

SELINUX=disabled

然后保存

4.遇到問題:從A服務器可以免密訪問B服務器,但是B訪問A卻需要輸入密碼

原因:A服務器有id_rsa 和 id_rsa.pub    id_dsa 和 id_dsa.pub 2套文件。B服務器只有 id_dsa 和 id_dsa.pub

解決: 在B服務器也生成id_rsa 和 id_rsa.pub,把B服務器的 id_rsa.pub 寫入A服務器 的authorized_keys

5.其他權限問題:

//用戶權限

chmod 700 /home/username

//.ssh文件夾權限

chmod 700 ~/.ssh/

// ~/.ssh/authorized_keys 文件權限

chmod 600 ~/.ssh/authorized_keys


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM