1. 程式人生 > >Linux下SSH免密碼登入配置

Linux下SSH免密碼登入配置

假設有 A、 B 兩臺 Linux 伺服器,我們希望能夠從其中一臺伺服器通過 SSH 免密碼登入到另一臺伺服器。
兩臺伺服器的資訊如下:
主機名    IP地址    免密碼登入使用者名稱
server1    192.168.12.11    guest1
server2    192.168.12.12    guest2
環境設定(root許可權)
1.關閉防火牆和SELinux
Redhat使用了SELinux來增強安全,關閉的辦法為:
    a. 永久有效
    修改 /etc/selinux/config 檔案中的 SELINUX=enforcing 修改為 SELINUX=disabled ,然後重啟。
    b. 臨時生效
    setenforce 0
關閉防火牆的方法為:
    a. 永久有效
    開啟:chkconfig iptables on
    關閉:chkconfig iptables off
    b. 臨時生效
    開啟:service iptables start
    關閉:service iptables stop
需要對兩臺伺服器分別進行設定,關閉防火牆和 SELinux 。
2.設定主機名
編輯 /etc/sysconfig/network 檔案,使用命令: vim /etc/sysconfig/network  ,設定格式:HOSTNAME=[主機名] 。
將A伺服器的主機名設定為 server1 。
將B伺服器的主機名設定為 server2 。

3.配置hosts
編輯 /etc/hosts 檔案,使用命令:vim /etc/hosts 。
在兩臺伺服器的 hosts 檔案中分別增加如下配置:
    192.168.12.11 server1
    192.168.12.12 server2

4.配置sshd
編輯兩臺伺服器的 /etc/ssh/sshd_config 檔案,使用命令:vim /etc/ssh/sshd_config 。
去掉以下3行的 “#” 註釋:
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
重啟 sshd 服務,使用命令:/sbin/service sshd restart 。
2.祕鑰設定
1.建立免密碼登入賬戶
使用命令:
    useradd guest1 //建立新使用者
    passwd guest1 //設定新使用者登入密碼

同樣地,在 server2 中建立一個 guest2 賬戶 。
2.生成祕鑰
從 root 使用者切換到要免密碼登入的賬戶,使用命令:su guest1 。
執行命令:ssh-keygen -t rsa

無需指定口令密碼,直接回車,命令執行完畢後會在 guest1 使用者的家目錄中(/home/guest1/.ssh)生成兩個檔案:
    id_rsa: 私鑰
    id_rsa.pub:公鑰

按照同樣的步驟,在 server2 中為 guest2 賬戶生成好祕鑰檔案。
3.將公鑰匯入到認證檔案
使用命令:
    cat /home/guest1/.ssh/id_rsa.pub >> /home/guest1/.ssh/authorized_keys
    ssh

[email protected] cat /home/guest2/.ssh/id_rsa.pub >> authorized_keys

使用命令 cat authorized_keys 檢視 authorized_keys 檔案內容如下:


4.設定檔案訪問許可權
使用命令:

    chmod 700 /home/guest1/.ssh
    chmod 600 /home/guest1/.ssh/authorized_keys
執行完以上設定之後 server1 就能夠免密碼登入本機了,使用命令:ssh [email protected]

注意:當 known_hosts 檔案中缺少主機名稱資訊時會提示如下資訊,輸入 yes 即可將主機名稱寫入 known_hosts 檔案並登陸成功。

至此,主機 server1 的 SSH 免密碼登入就算配置完成了,接下來配置 server2 。
5.將認證檔案複製到其他主機
執行以下命令將生成的 authorized_keys、known_hosts兩個檔案從 server1 複製到 server2 。
    # scp [要傳輸的本地檔案] [遠端主機使用者名稱]@遠端主機ip或主機名:[檔案要傳輸到的目標位置]
    scp /home/guest1/.ssh/authorized_keys [email protected]:/home/guest2/.ssh/authorized_keys
    scp /home/guest1/.ssh/known_hosts [email protected]:/home/guest2/.ssh/known_hosts

待複製完成以後,先使用以下命令設定檔案訪問許可權。
    chmod 700 /home/guest2/.ssh
    chmod 600 /home/guest2/.ssh/authorized_keys
然後,執行 ssh [email protected] 命令就能夠使用server2的guest2賬戶免密碼登入server1的guest1賬戶了。

至此,兩臺伺服器的SSH 免密碼登入就全部設定完成,如果出錯,請仔細檢查以上各個步驟。