自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

運維必備:批量實現(xiàn)Linux機器SSH免密登錄的自動化腳本

網絡 系統(tǒng)
本文將詳細介紹如何通過Shell腳本實現(xiàn)自動批量地在所有目標服務器之間配置SSH免密登錄,幫助運維人員輕松應對類似的批量管理任務。

在某個大型項目的運維過程中,運維工程師小李需要在數十臺Linux服務器上執(zhí)行一項例行的系統(tǒng)更新任務。為了確保任務的高效完成,他需要在所有目標服務器之間實現(xiàn)SSH免密登錄,這樣可以避免每次登錄都手動輸入密碼,提高工作效率。然而,手動配置每臺服務器的免密登錄不僅耗時,而且容易出錯。

為了解決這個問題,小李決定編寫一個Shell腳本,自動批量地在所有目標服務器之間配置SSH免密登錄。本文將詳細介紹如何通過Shell腳本實現(xiàn)這一目標,幫助運維人員輕松應對類似的批量管理任務。

實現(xiàn)思路

  • 首先在本地機器上生成SSH密鑰對,如果尚未生成;
  • 接著準備一個包含目標服務器IP地址的文件和一個用于登錄的遠程用戶名和密碼;
  • 然后編寫Shell腳本,讀取服務器列表并使用sshpass工具和ssh-copy-id命令將本地公鑰復制到每個遠程服務器的~/.ssh/authorized_keys文件中,以實現(xiàn)免密登錄;
  • 最后,通過執(zhí)行該腳本,自動批量配置所有目標服務器的SSH免密登錄,以簡化和自動化運維操作。

腳本編寫

這個Shell腳本用于批量將SSH公鑰分發(fā)到多個目標主機,以實現(xiàn)免密登錄。腳本首先檢查必要的依賴和輸入,然后遍歷目標主機列表,將本地生成的SSH公鑰拷貝到每個目標主機上。

(1) 設置公鑰文件路徑

PUB_KEY_FILE="$HOME/.ssh/id_rsa.pub"

定義本地公鑰文件的路徑,默認路徑為~/.ssh/id_rsa.pub。

(2) 檢查sshpass是否安裝

# 檢查sshpass是否安裝
if ! command -v sshpass &> /dev/null; then
    echo "sshpass 未安裝。請先安裝 sshpass,然后再運行此腳本。"
    exit 1
fi

使用command -v檢查系統(tǒng)中是否安裝了sshpass工具。如果未安裝,則提示用戶安裝并退出腳本。

(3) 設置目標主機列表文件 ,并檢查文件是否存在

host_list_file="$1"
if [ ! -f "$host_list_file" ]; then
    echo "錯誤: 文件 '$host_list_file' 不存在"
    exit 1
fi

將第一個命令行參數(目標主機列表文件)賦值給host_list_file變量。

(4) 讀取目標主機列表并分發(fā)公鑰

while IFS= read -r host; do
    echo "正在處理 $host..."
    ......
done < "$host_list_file"

使用while循環(huán)逐行讀取目標主機列表文件,每次讀取一個主機地址并賦值給host變量。

(5) 生成SSH密鑰對

    if [ ! -f ~/.ssh/id_rsa ]; then
        ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
    fi

檢查本地是否已經存在SSH私鑰文件~/.ssh/id_rsa,如果不存在,則生成一個新的SSH密鑰對。

(6) 使用sshpass和ssh-copy-id將公鑰拷貝到目標主機上

sshpass -p "$password" ssh-copy-id -i ~/.ssh/id_rsa.pub "-p $ssh_port" "$host"

使用sshpass工具提供密碼,通過ssh-copy-id命令將本地公鑰拷貝到目標主機的~/.ssh/authorized_keys文件中。指定SSH端口和目標主機地址。

腳本使用

這邊準備了四臺測試機器,如下圖:

在跳板機上新建一個文件名為 deploy_ssh_keys.sh,并把腳本的內容復制進去,然后,保存退出。如下圖:

然后,為腳本賦予執(zhí)行的權限,執(zhí)行如下命令:

chmod +x deploy_ssh_keys.sh

接著,新建一個名為ip.txt的文件,用于存放ip列表的,內容格式如下:

192.168.31.185
192.168.31.232
192.168.31.210
192.168.31.209

運行如下命令,執(zhí)行腳本文件

./deploy_ssh_keys.sh ip.txt 22 123456

執(zhí)行成功后,會輸出如下信息。

最后,在跳板機上順便找一臺機測試,輸入結果如下:

結論

通過上述步驟和Shell腳本,你可以輕松地在多臺Linux服務器之間實現(xiàn)SSH免密登錄。這種方法適用于需要批量管理和自動化運維的場景,能夠極大提高工作效率。希望這篇教程對你有所幫助!

責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2018-06-23 07:31:05

2017-10-13 13:14:35

互聯(lián)網

2012-05-05 21:28:44

2024-06-11 10:41:14

2012-10-22 14:54:48

2019-11-28 08:25:53

Linux腳本SSH

2014-08-04 10:10:35

IT運維自動化運維

2021-11-19 10:55:03

GitOps運維自動化

2017-03-22 18:30:44

Linux運維自動化ansible

2017-03-22 16:31:30

Linux運維自動化ansible

2015-10-08 10:55:23

云服務自動化運維 ANSIBLE

2012-11-20 17:22:57

2018-07-26 13:50:37

IT架構運維

2013-04-16 14:55:21

自動化運維Puppet實戰(zhàn)

2014-09-22 11:24:18

運維

2015-10-21 11:03:21

ssh登錄Linux

2017-07-25 10:53:27

2010-09-06 09:31:56

開源工具運維自動化

2015-08-05 09:53:34

運維自動化

2024-10-28 09:38:15

點贊
收藏

51CTO技術棧公眾號