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
特別說明(公司):
使用非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一致,若無執(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)文章
shell腳本實(shí)現(xiàn)本地文件與服務(wù)器文件同步
這篇文章主要介紹了本地文件與服務(wù)器文件同步shell腳本的方法,然后在文章給大家補(bǔ)充介紹了shell腳本備份本地服務(wù)器的文件到遠(yuǎn)程服務(wù)器的實(shí)例代碼,需要的朋友可以參考下2017-11-11linux 環(huán)境 mysql寫入中文報(bào)錯(cuò)
本篇文章主要介紹了linux 環(huán)境 mysql寫入中文報(bào)錯(cuò)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04getcwd cannot access parent directories錯(cuò)誤解決方法
這篇文章主要介紹了getcwd cannot access parent directories錯(cuò)誤解決方法,在Linux下執(zhí)行命令時(shí)有時(shí)會(huì)無意中遇到這個(gè)錯(cuò)誤,這只是一個(gè)意外錯(cuò)誤,解決方法很簡(jiǎn)單,需要的朋友可以參考下2015-01-01一天一個(gè)shell命令 linux文本操作系列-head,tail命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux文本操作系列-head,tail命令詳解,需要的朋友可以參考下2016-06-06使用shell腳本找出網(wǎng)站的空頁面和404錯(cuò)誤頁面
這篇文章主要介紹了使用shell腳本找出網(wǎng)站的空頁面和404錯(cuò)誤頁面,本文使用一句話實(shí)現(xiàn),需要的朋友可以參考下2014-11-11shell腳本實(shí)現(xiàn)批量采集愛站關(guān)鍵詞庫
這篇文章主要介紹了shell腳本實(shí)現(xiàn)批量采集愛站關(guān)鍵詞庫,本文工具實(shí)現(xiàn)簡(jiǎn)單,只用一句話實(shí)現(xiàn),需要的朋友可以參考下2014-11-11