1. 程式人生 > >批量建立linux機器之間的ssh互信的自動化指令碼

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

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

1、在其中一臺機器上新建一個可執行的檔案(假設檔名為ssh_auth.sh),在該檔案中新增以下內容:


#!/bin/sh
DEST_USER=$1
PASSWORD=$2
HOSTS_FILE=$3
if [ $# -ne 3 ]; then
    echo "Usage:"
    echo "$0 remoteUser remotePassword hostsFile"
    exit 1
fi

SSH_DIR=~/.ssh
SCRIPT_PREFIX=./tmp
echo ===========================
# 1. prepare  directory .ssh
mkdir $SSH_DIR
chmod 700 $SSH_DIR

# 2. generat ssh key
TMP_SCRIPT=$SCRIPT_PREFIX.sh
echo  "#!/usr/bin/expect">$TMP_SCRIPT
echo  "spawn ssh-keygen -b 1024 -t rsa">>$TMP_SCRIPT
echo  "expect *key*">>$TMP_SCRIPT
echo  "send \r">>$TMP_SCRIPT
if [ -f $SSH_DIR/id_rsa ]; then
    echo  "expect *verwrite*">>$TMP_SCRIPT
    echo  "send y\r">>$TMP_SCRIPT
fi
echo  "expect *passphrase*">>$TMP_SCRIPT
echo  "send \r">>$TMP_SCRIPT
echo  "expect *again:">>$TMP_SCRIPT
echo  "send \r">>$TMP_SCRIPT
echo  "interact">>$TMP_SCRIPT

chmod +x $TMP_SCRIPT

/usr/bin/expect $TMP_SCRIPT
rm $TMP_SCRIPT

# 3. generat file authorized_keys
cat $SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys

# 4. chmod 600 for file authorized_keys
chmod 600 $SSH_DIR/authorized_keys
echo ===========================
# 5. copy all files to other hosts
for 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 
[email protected]
$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." fi done echo done.

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

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


相關推薦

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

手工建立ssh互信需要好幾個步驟,並且中途人工互動(輸入密碼等),如果機器數目多,則很繁瑣,為了節省自己的時間,寫了個自動化指令碼,供參考。 1、在其中一臺機器上新建一個可執行的檔案(假設檔名為ssh_auth.sh),在該檔案中新增以下內容: #!/bin/sh DE

linux機器之間建立互信ssh登入

在linux叢集之間建立互信登入 首先選擇一個使用者,su xxuser 進入該使用者的home目錄 cd ~ 在該目錄下建立一個資料夾 .ssh/ 進入.ssh資料夾,執行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,會在該目錄下生成

VMware workstation批量建立虛擬機器自動化安裝作業系統(一)

一. 簡述 作為從事IT行業運維工作的Linuxer,大多情況下需要在測試環境中部署業務系統並進行測試,在沒有足夠的計算儲存網路條件下,使用虛擬機器進行虛擬叢集的建立和使用,是一種不錯的學習和實踐方式。 本篇部落格主要介紹如何使用VMware workstation進行虛擬

linux主機基於ssh互信配置

png http 目錄 -1 alt mage src 技術分享 配置 大概就是說:我使用ssh-keygen在當前家目錄創建了一個公鑰,通ssh-copy-id -i 把公鑰發送過。輸入指定對方的用戶名密碼,然後我就可以登錄到你了。互相無密碼ssh登錄的操作步驟一樣!

CentOS 配置叢集機器之間SSH免密碼登入

特別提示:不能使用root使用者 SSH 為 Secure Shell 的縮寫,由 IETF 的網路小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全

使用powercli命令批量建立虛擬機器

------第一步: 連線vcenter  Connect-VIServer -Server 123.123.245.210(vcenter的ip) -Username "[email protected]" -Password "abcd" ------ 批量

如何使用指令碼批量建立虛擬機器(下)

  上篇文章我們介紹瞭如何使用VMware來克隆虛擬機器,克隆雖然能夠使我們避免了繁瑣的建立過程、大大簡化我們的操作,但在需要建立數量巨大的虛擬機器的情況下其步驟依然較多,顯然並不能滿足我們這種高效化

Linux————Linux批量建立使用者並設定密碼(shell指令碼

在這裡分為兩種情況 1.有規則給定使用者名稱 2.給定無規則使用者名稱 3.刪除 一:以下是建立給定使用者名稱: 首先得給出給定使用者名稱,並逐個建立 for user in {u1,u2,u3,u

Linux機器ssh免密登錄

scp image touch 密碼 keygen 分享圖片 目標 ssh免密 img 前言 一臺Linux機器通過ssh的方式連接別的機器或通過scp的方式傳輸文件,都需要輸入密碼。 為了解決每次輸入密碼的困擾,可采用添加密鑰的方式實現。 實現過程 源服務器A,目標服務器

linux 2臺機器之間建立ssh互信

環境說明192.168.157.101 vms001 RHEL7.1192.168.157.102 vms002 RHEL7.1 vms001伺服器操作1.vms001生成公鑰私鑰命令執行成功,會在~/.ssh目錄下生成2個檔案id_rsa.pub為公鑰檔案,現實生活中相當於鎖id_rsa 為私鑰檔案,現實

20181225-Linux Shell Bash環境下自動化建立ssh互信指令碼

20181225-Linux Shell Bash環境下自動化建立ssh互信指令碼 我的Blog 部落格園 https://www.cnblogs.com/piggybaba/ 個人網站 http://piggybaba.cn GitHub https://github.com/AndyYHM/Wr

Linux之間配置SSH互信SSH免密碼登錄)

免密碼 star class 默認 system 服務端 sshd linu ssh服務器 為簡化SSH過程,采用證書方式,免去SSH登入時需要輸入賬號密碼的過程,具體操作如下: 一、在SSH服務器所在機器上 1、以root用戶登錄,更改ssh配置文件 /etc/ssh/s

三臺機器之間root用戶ssh互信配置

主機 ID gen center 三臺 enter roo oot 回車 三臺機器之間root用戶ssh互信配置 (1)在所有的主機上執行:ssh-keygen -t rsa # 在每臺都需要操作,一路回車(2)將所有機子上公鑰(id_rsa.pub)導到一個主機的/roo

Linux之間配置SSH互信SSH免密碼登入)

1.在客戶端生成公鑰私鑰對 命令:ssh-keygen -t rsa 一路預設回車,系統在/root/.ssh下生成id_rsa、id_rsa.pub 2.檢視系統生成的公鑰私鑰對 命令:ls /root/.ssh 可以看到如下的檔案 3.將生成的公鑰私鑰對i

Linux伺服器之間建立信任關係,ssh免密碼登入

建立信任關係的基本操作 基本場景是想從一臺Server伺服器直接登入另一臺,或者將Server伺服器的資料不需密碼驗證直接拷貝至Client伺服器,以下我們簡稱Server伺服器為S(待發送的資料檔案在這臺伺服器上),Client服務為C,信任關係的最簡單操作方法如下

Linux重置root密碼及機器之間相互登錄

root密碼 相互登錄單用戶模式 系統重啟命令:reboot init 6 shutdown -r now 關機命令: init 0 poweroff 運行級別:0-6 [root@localhost ~]# ls -l /usr/lib/sys

批量實現多臺服務器之間ssh無密碼登錄的相互信任關系

rip 情況下 它的 文件拷貝 遠程機器 列表 ln -s file not in 最近IDC上架了一批hadoop大數據業務服務器,由於集群環境需要在這些服務器之間實現ssh無密碼登錄的相互信任關系。具體的實現思路:在其中的任一臺服務器上通過"ssh-keygen -

22、linuxssh互信配置

地方 net 包含 mkdir 設置 lin keys 提醒 一個 轉載:https://blog.csdn.net/hrn1216/article/details/51568830 https://blog.csdn.net/u013144287/article/deta

Linux環境下實現多臺kvm虛擬機器之間組成amp架構連線

規劃圖 一、安裝kvm 1、環境準備 安裝之前,需要lscpu看flag是否包含svm或者vmx,該標誌表示cpu是否支援硬體虛擬化,而且需要64位架構,命令:lscpu | egrep 'vmx|lv|svm' 如果用的是vmware,需要開啟 開機後再檢視,模組已經裝入(Cent

ssh-keygen的使用方法及配置authorized_keys兩臺linux機器相互認證

ssh-keygen的使用方法及配置authorized_keys兩臺linux機器相互認證 一、概述 1、就是為了讓兩個linux機器之間使用ssh不需要使用者名稱和密碼。採用了數字簽名RSA或者DSA來完成這個操作 2、模型分析 假設 A (192.168.20.59)為客戶機器