目標:從服務器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
完成以上兩步就可以實現了,如果遇到問題無法連接,請繼續往下看:
【常見問題】
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
然后保存
以上方法可以解決99%的連不上問題。希望對你有幫助。