分享/朱季謙
最近在搭建linux集群,做了SSH免密登錄的設置,正好把過程記錄一下:
一.用搭建好的兩台虛擬機做演示,A機器:192.168.200.129,B機器:192.168.200.128
二.分別在兩台機器上執行以下步驟:
1.使用root登錄A服務器:su – root
2.在登錄的A服務器上通過指定加密算法指令ssh-keygen -t rsa來生成秘鑰,執行完該指令一直回車即可。
說明:(1)ssh-keygen –t rsa是指定加密的算法是rsa
(2)(/root/.ssh/id_rsa)是保存秘鑰的路徑
(3)/root/.ssh/id_rsa.pub是生成的公鑰
3.將公鑰傳到B服務器,以root用戶登錄B機器,回車后,當跳出yes/no的選項后,選擇yes,然后輸入B機器的密碼,出現下面截圖類型的信息,就證明設置成功了,這時可以通過ssh root@192.168.200.128測試下,正常情況下可免密登錄到B機器上
A機器傳給B機器的秘鑰存放在/root/.ssh/目錄下,進入到這個目錄,可以看到:
完成以上步驟,就可以在A機器上免密碼SSH登錄B機器了,這時若要互相免密,可在B機器上把以上步驟重復一遍,但B機器ssh-copy-id root@ip的ip則是A機器的了。
以上步驟,可以通過shell腳本來自動化操作互免。
1 #!/bin/bash 2 set -e 3 4 ssh-keygen() { 5 yum -y install expect 6 /usr/bin/expect <<-EOF 7 set timeout 60 8 spawn ssh-keygen 9 expect { 10 "Enter file in which to save the key (/root/.ssh/id_rsa):" { send "\r"; exp_continue} 11 "Overwrite (y/n)?" { send "n\r" } 12 "Enter passphrase (empty for no passphrase):" { send "\r"; exp_continue} 13 "Enter same passphrase again:" { send "\r"} 14 } 15 expect eof 16 EOF 17 echo "" 18 } 19 20 21 ssh-copy(){ 22 /usr/bin/expect <<-EOF 23 set timeout -1 24 spawn ssh-copy-id $1 25 expect { 26 "*yes/no" { send "yes\r"; exp_continue } 27 "*password:" { send "$2\r" } 28 } 29 expect eof 30 EOF 31 } 32 33 34 ssh-keygen 35 ssh-copy "root@192.168.200.128"