1. 程式人生 > 實用技巧 >ssh免密登陸相關配置

ssh免密登陸相關配置

一 配置ssh祕鑰

在master,slave機器上都生成ssh如下:

[root@localhost ~]# su - postgres
[postgres@localhost ~]$ ssh-keygen -t rsa
[postgres@localhost ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[postgres@localhost ~]$ chmod 600 ~/.ssh/authorized_keys

分別將master的公鑰複製到slave,slave的公鑰複製到master。

#master端
[postgres@localhost ~]$ scp ~/.ssh/authorized_keys postgres@slave:~/.ssh/
#slave端
[postgres@localhost ~]$ scp ~/.ssh/authorized_keys postgres@master:~/.ssh/

驗證下ssh配置是否成功

#master端
[postgres@slave ~]$ ssh postgres@slave
Last login: Tue Dec 20 21:22:50 2016 from master
#slave端
[postgres@slave ~]$ ssh postgres@master
Last login: Tue Dec 20 21:22:50 2016 from slave

證明ssh信任關係配置成功。

二 SSH免密失敗原因定位分析

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

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

c)伺服器B上使用者家目錄檔案許可權必須是700,比如使用者名稱是aischang,則/home/aischang這個目錄許可權必須是700

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

  1. #原因
  2. sshd為了安全,對屬主的目錄和檔案許可權有所要求。如果許可權
  3. 不對,則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的ip檢視詳情,根據輸出內容具體問題具體分析了