批量建立linux機器之間的ssh互信的自動化指令碼__linux

來源:互聯網
上載者:User

手工建立ssh互信需要好幾個步驟,並且中途人工互動(輸入密碼等),如果機器數目多,則很繁瑣,為了節省自己的時間,寫了個自動化指令碼,供參考。

1、在其中一台機器上建立一個可執行檔檔案(假設檔案名稱為ssh_auth.sh),在該檔案中添加以下內容:

#!/bin/shDEST_USER=$1PASSWORD=$2HOSTS_FILE=$3if [ $# -ne 3 ]; then    echo "Usage:"    echo "$0 remoteUser remotePassword hostsFile"    exit 1fiSSH_DIR=~/.sshSCRIPT_PREFIX=./tmpecho ===========================# 1. prepare  directory .sshmkdir $SSH_DIRchmod 700 $SSH_DIR# 2. generat ssh keyTMP_SCRIPT=$SCRIPT_PREFIX.shecho  "#!/usr/bin/expect">$TMP_SCRIPTecho  "spawn ssh-keygen -b 1024 -t rsa">>$TMP_SCRIPTecho  "expect *key*">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTif [ -f $SSH_DIR/id_rsa ]; then    echo  "expect *verwrite*">>$TMP_SCRIPT    echo  "send y\r">>$TMP_SCRIPTfiecho  "expect *passphrase*">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTecho  "expect *again:">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTecho  "interact">>$TMP_SCRIPTchmod +x $TMP_SCRIPT/usr/bin/expect $TMP_SCRIPTrm $TMP_SCRIPT# 3. generat file authorized_keyscat $SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys# 4. chmod 600 for file authorized_keyschmod 600 $SSH_DIR/authorized_keysecho ===========================# 5. copy all files to other hostsfor ip in $(cat $HOSTS_FILE)  do    if [ "x$ip" != "x" ]; then        echo -------------------------        TMP_SCRIPT=${SCRIPT_PREFIX}.$ip.sh        # check known_hosts        val=`ssh-keygen -F $ip`        if [ "x$val" == "x" ]; then            echo "$ip not in $SSH_DIR/known_hosts, need to add"            val=`ssh-keyscan $ip 2>/dev/null`            if [ "x$val" == "x" ]; then                echo "ssh-keyscan $ip failed!"            else                echo $val>>$SSH_DIR/known_hosts            fi        fi        echo "copy $SSH_DIR to $ip"                        echo  "#!/usr/bin/expect">$TMP_SCRIPT        echo  "spawn scp -r  $SSH_DIR $DEST_USER@$ip:~/">>$TMP_SCRIPT        echo  "expect *assword*">>$TMP_SCRIPT        echo  "send $PASSWORD\r">>$TMP_SCRIPT        echo  "interact">>$TMP_SCRIPT                chmod +x $TMP_SCRIPT        #echo "/usr/bin/expect $TMP_SCRIPT" >$TMP_SCRIPT.do        #sh $TMP_SCRIPT.do&            /usr/bin/expect $TMP_SCRIPT        rm $TMP_SCRIPT        echo "copy done."                    fidoneecho done.

2、在該可執行檔的同目錄下建立名為host的檔案,將要建立ssh互信的機器名或ip地址添加到該檔案中,每個機器名或ip佔一行,如:

192.168.1.2192.168.1.3192.168.1.4192.168.1.5


3、運行可執行指令碼ssh_auth.sh檔案,ssh_auth.sh接受三個參數,遠程機器使用者名稱、密碼和host檔案名稱(相對路徑或絕對路徑均可)。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.