偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

實(shí)現(xiàn)思路

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

腳本編寫

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

(1) 設(shè)置公鑰文件路徑

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

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

(2) 檢查sshpass是否安裝

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

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

(3) 設(shè)置目標(biāo)主機(jī)列表文件 ,并檢查文件是否存在

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

將第一個命令行參數(shù)(目標(biāo)主機(jī)列表文件)賦值給host_list_file變量。

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

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

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

(5) 生成SSH密鑰對

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

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

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

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

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

腳本使用

這邊準(zhǔn)備了四臺測試機(jī)器,如下圖:

在跳板機(jī)上新建一個文件名為 deploy_ssh_keys.sh,并把腳本的內(nèi)容復(fù)制進(jìn)去,然后,保存退出。如下圖:

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

chmod +x deploy_ssh_keys.sh

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

192.168.31.185
192.168.31.232
192.168.31.210
192.168.31.209

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

./deploy_ssh_keys.sh ip.txt 22 123456

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

最后,在跳板機(jī)上順便找一臺機(jī)測試,輸入結(jié)果如下:

結(jié)論

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

責(zé)任編輯:趙寧寧 來源: 攻城獅成長日記
相關(guān)推薦

2018-06-23 07:31:05

2017-10-13 13:14:35

互聯(lián)網(wǎng)

2012-05-05 21:28:44

2012-10-22 14:54:48

2024-06-11 10:41:14

2019-11-28 08:25:53

Linux腳本SSH

2014-08-04 10:10:35

IT運(yùn)維自動化運(yùn)維

2021-11-19 10:55:03

GitOps運(yùn)維自動化

2017-03-22 18:30:44

Linux運(yùn)維自動化ansible

2017-03-22 16:31:30

Linux運(yùn)維自動化ansible

2025-05-06 07:50:00

Ansible命令運(yùn)維

2015-10-08 10:55:23

云服務(wù)自動化運(yùn)維 ANSIBLE

2012-11-20 17:22:57

2014-09-22 11:24:18

運(yùn)維

2013-04-16 14:55:21

自動化運(yùn)維Puppet實(shí)戰(zhàn)

2018-07-26 13:50:37

IT架構(gòu)運(yùn)維

2015-10-21 11:03:21

ssh登錄Linux

2017-07-25 10:53:27

2015-06-24 10:42:19

云計算運(yùn)維自動化運(yùn)維ANSIBLE

2015-08-05 09:53:34

運(yùn)維自動化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號