Shell腳本實(shí)現(xiàn)服務(wù)器多臺(tái)免密登錄操作
簡(jiǎn)介
本腳本(auto_ssh_batch.sh)用于在多臺(tái)主機(jī)之間快速配置SSH免密登錄,并支持遠(yuǎn)程傳輸腳本/文件及執(zhí)行命令。通過 pass 文件提供統(tǒng)一認(rèn)證憑據(jù),通過 nodes 文件定義目標(biāo)主機(jī)列表,實(shí)現(xiàn)批量自動(dòng)化操作。
下載
git clone https://gitee.com/wesley_li0/NoPassword.git
特別說(shuō)明(公司):
使用非root用戶需要?jiǎng)?chuàng)建用戶并添加root組,并且配置信任的sudo權(quán)限,可以使用命令實(shí)現(xiàn)
USER : 用戶名
PASSWORD:密碼
USER=your_user && PASSWORD=your_password && useradd -m -G root -s /bin/bash "$USER" && echo "$USER:$PASSWORD" | chpasswd && echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USER
前提條件
- 操作系統(tǒng):目標(biāo)主機(jī)需為 RHEL/CentOS 7 系統(tǒng)(因依賴
sshpass-1.06-2.el7.x86_64.rpm)。 - 權(quán)限要求:
- 執(zhí)行腳本的主機(jī)需具有root權(quán)限以安裝
sshpass。 - 所有目標(biāo)主機(jī)的SSH服務(wù)已啟動(dòng),且防火墻允許SSH端口(默認(rèn)22)通信。
- 所有主機(jī)用戶名密碼一致(免密完成后需改密碼不影響免密)
- 執(zhí)行腳本的主機(jī)需具有root權(quán)限以安裝
文件準(zhǔn)備:確保以下文件及目錄結(jié)構(gòu)存在:
/root/NoPassword/ # 腳本存放與用戶家目錄下
├── auto_ssh_batch.sh # 主執(zhí)行腳本
├── bin
│ └── generate_ssh_key.sh # 待分發(fā)的遠(yuǎn)程執(zhí)行腳本
├── config
│ └── nodes # 存儲(chǔ)目標(biāo)主機(jī)IP和節(jié)點(diǎn)ID
└── main
└── sshpass-1.06-2.el7.x86_64.rpm # sshpass安裝包配置文件格式
**nodes**** 文件**
每行定義一個(gè)目標(biāo)主機(jī)的IP和節(jié)點(diǎn)ID (ID盡量與后續(xù)集群自動(dòng)化腳本ID一致,若無(wú)執(zhí)行集群腳本需求,ID自定義,僅作為輸出機(jī)器標(biāo)識(shí)使用),空格分隔:
IP_Address Node_ID User Password
示例:
192.168.1.10 1 root root123 192.168.1.11 2 root root123
腳本使用方法
SSH自定義端口
- SSH 端口指定,修改 `auto_ssh_batch.sh` 腳本中的`SSH_PORT`變量 - `SSH_PORT` 該變量用于指定 SSH 鏈接端口,默認(rèn) 22
放置依賴文件
- 將 `sshpass` 的 RPM 包放入 `main/` 目錄(默認(rèn)已存在)。 - 確保 `generate_ssh_key.sh` 腳本位于 `bin/` 目錄。
賦予執(zhí)行權(quán)限,并執(zhí)行腳本
sudo chmod +x auto_ssh_batch.sh sudo sh auto_ssh_batch.sh # 腳本運(yùn)行結(jié)束后使用ssh驗(yàn)證 # 默認(rèn)ssh端口 ssh username@ip # 指定ssh端口 ssh -p xx username@ip
-------------------------腳本使用到此結(jié)束--------------------
腳本執(zhí)行流程
- 文件檢查驗(yàn)證
config/pass和config/nodes是否存在,格式是否正確。 - 初始化環(huán)境
- 生成本地SSH密鑰對(duì)(如不存在)。
- 安裝
sshpass(若未安裝)。
- 批量操作遍歷
nodes文件中的每個(gè)IP:- 分發(fā)公鑰:使用
sshpass將公鑰復(fù)制到目標(biāo)主機(jī),實(shí)現(xiàn)免密登錄。 - 傳輸文件:將
generate_ssh_key.sh、pass、nodes、sshpass上傳到目標(biāo)主機(jī)的/tmp。 - 遠(yuǎn)程執(zhí)行:在目標(biāo)主機(jī)上運(yùn)行
generate_ssh_key.sh。
- 分發(fā)公鑰:使用
注意事項(xiàng)
- 安全性警告
- nodes 文件中密碼以明文存儲(chǔ),建議僅在受信任環(huán)境使用。
- 腳本使用
-o StrictHostKeyChecking=no,自動(dòng)信任主機(jī)密鑰,可能存在中間人攻擊風(fēng)險(xiǎn)。
- 錯(cuò)誤處理
- 若某主機(jī)公鑰分發(fā)失敗,腳本會(huì)跳過該主機(jī)繼續(xù)執(zhí)行。
- 傳輸文件或遠(yuǎn)程命令失敗時(shí),查看錯(cuò)誤輸出并檢查網(wǎng)絡(luò)連通性。
- 日志輸出執(zhí)行過程中會(huì)顯示詳細(xì)日志,包括成功/失敗的主機(jī)IP及操作狀態(tài)。
通過以上步驟,您可快速完成多主機(jī)SSH免密登錄配置及批量遠(yuǎn)程操作。
到此這篇關(guān)于Shell腳本實(shí)現(xiàn)服務(wù)器多臺(tái)免密的文章就介紹到這了,更多相關(guān)Shell服務(wù)器多臺(tái)免密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過Spring Shell 開發(fā) Java 命令行應(yīng)用
這篇文章主要介紹了通過Spring Shell 開發(fā) Java 命令行應(yīng)用的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
Linux shell腳本對(duì)常見圖片格式批量轉(zhuǎn)換為PDF文件
Linux Debian12基于ImageMagick圖像處理工具編寫shell腳本用于常見圖片png、jpg、jpeg、webp、tiff格式批量轉(zhuǎn)PDF文件,”多個(gè)圖片分開生成多個(gè)PDF文件“或者“多個(gè)圖片合并生成一個(gè)PDF文件”,本文詳細(xì)介紹了Linux shell腳本對(duì)常見圖片格式批量轉(zhuǎn)換為PDF文件的操作2024-12-12
Linux?du命令實(shí)現(xiàn)根據(jù)文件或者文件夾大小排序輸出
Linux是一個(gè)強(qiáng)大的操作系統(tǒng),廣泛用于服務(wù)器和個(gè)人計(jì)算機(jī),本文主要來(lái)和大家聊聊如何利用du命令實(shí)現(xiàn)根據(jù)文件或者文件夾大小排序輸出,感興趣的可以了解下2023-09-09
CentOS中使用Shell腳本實(shí)現(xiàn)每天自動(dòng)備份網(wǎng)站文件和數(shù)據(jù)庫(kù)并上傳到FTP中
這篇文章主要介紹了CentOS中使用Shell腳本實(shí)現(xiàn)每天自動(dòng)備份網(wǎng)站文件和數(shù)據(jù)庫(kù)并上傳到FTP中,本文腳本比較實(shí)用,其它Linux系統(tǒng)也可參考,需要的朋友可以參考下2014-12-12
實(shí)現(xiàn)自動(dòng)清除日期目錄shell腳本實(shí)例代碼
這篇文章主要介紹了實(shí)現(xiàn)自動(dòng)清除日期目錄shell腳本實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04

