linux實現SSH免密登錄設置,以及shell腳本實現


分享/朱季謙

最近在搭建linux集群,做了SSH免密登錄的設置,正好把過程記錄一下:

一.用搭建好的兩台虛擬機做演示,A機器:192.168.200.129,B機器:192.168.200.128

二.分別在兩台機器上執行以下步驟:

1.使用root登錄A服務器:su – root

image

 

2.在登錄的A服務器上通過指定加密算法指令ssh-keygen -t rsa來生成秘鑰,執行完該指令一直回車即可。

405905cc223d52b0ae542e7fa020637

說明:(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機器上

a2d012efa890d14c5a69f6be9c0530a

A機器傳給B機器的秘鑰存放在/root/.ssh/目錄下,進入到這個目錄,可以看到:

image

 

完成以上步驟,就可以在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"

 


免責聲明!

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



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