Shell腳本實現(xiàn)服務器多臺免密登錄操作
簡介
本腳本(auto_ssh_batch.sh)用于在多臺主機之間快速配置SSH免密登錄,并支持遠程傳輸腳本/文件及執(zhí)行命令。通過 pass 文件提供統(tǒng)一認證憑據,通過 nodes 文件定義目標主機列表,實現(xiàn)批量自動化操作。
下載
git clone https://gitee.com/wesley_li0/NoPassword.git
特別說明(公司):
使用非root用戶需要創(chuàng)建用戶并添加root組,并且配置信任的sudo權限,可以使用命令實現(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):目標主機需為 RHEL/CentOS 7 系統(tǒng)(因依賴
sshpass-1.06-2.el7.x86_64.rpm)。 - 權限要求:
- 執(zhí)行腳本的主機需具有root權限以安裝
sshpass。 - 所有目標主機的SSH服務已啟動,且防火墻允許SSH端口(默認22)通信。
- 所有主機用戶名密碼一致(免密完成后需改密碼不影響免密)
- 執(zhí)行腳本的主機需具有root權限以安裝
文件準備:確保以下文件及目錄結構存在:
/root/NoPassword/ # 腳本存放與用戶家目錄下
├── auto_ssh_batch.sh # 主執(zhí)行腳本
├── bin
│ └── generate_ssh_key.sh # 待分發(fā)的遠程執(zhí)行腳本
├── config
│ └── nodes # 存儲目標主機IP和節(jié)點ID
└── main
└── sshpass-1.06-2.el7.x86_64.rpm # sshpass安裝包配置文件格式
**nodes**** 文件**
每行定義一個目標主機的IP和節(jié)點ID (ID盡量與后續(xù)集群自動化腳本ID一致,若無執(zhí)行集群腳本需求,ID自定義,僅作為輸出機器標識使用),空格分隔:
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 鏈接端口,默認 22
放置依賴文件
- 將 `sshpass` 的 RPM 包放入 `main/` 目錄(默認已存在)。 - 確保 `generate_ssh_key.sh` 腳本位于 `bin/` 目錄。
賦予執(zhí)行權限,并執(zhí)行腳本
sudo chmod +x auto_ssh_batch.sh sudo sh auto_ssh_batch.sh # 腳本運行結束后使用ssh驗證 # 默認ssh端口 ssh username@ip # 指定ssh端口 ssh -p xx username@ip
-------------------------腳本使用到此結束--------------------
腳本執(zhí)行流程
- 文件檢查驗證
config/pass和config/nodes是否存在,格式是否正確。 - 初始化環(huán)境
- 生成本地SSH密鑰對(如不存在)。
- 安裝
sshpass(若未安裝)。
- 批量操作遍歷
nodes文件中的每個IP:- 分發(fā)公鑰:使用
sshpass將公鑰復制到目標主機,實現(xiàn)免密登錄。 - 傳輸文件:將
generate_ssh_key.sh、pass、nodes、sshpass上傳到目標主機的/tmp。 - 遠程執(zhí)行:在目標主機上運行
generate_ssh_key.sh。
- 分發(fā)公鑰:使用
注意事項
- 安全性警告
- nodes 文件中密碼以明文存儲,建議僅在受信任環(huán)境使用。
- 腳本使用
-o StrictHostKeyChecking=no,自動信任主機密鑰,可能存在中間人攻擊風險。
- 錯誤處理
- 若某主機公鑰分發(fā)失敗,腳本會跳過該主機繼續(xù)執(zhí)行。
- 傳輸文件或遠程命令失敗時,查看錯誤輸出并檢查網絡連通性。
- 日志輸出執(zhí)行過程中會顯示詳細日志,包括成功/失敗的主機IP及操作狀態(tài)。
通過以上步驟,您可快速完成多主機SSH免密登錄配置及批量遠程操作。
到此這篇關于Shell腳本實現(xiàn)服務器多臺免密的文章就介紹到這了,更多相關Shell服務器多臺免密內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
getcwd cannot access parent directories錯誤解決方法
這篇文章主要介紹了getcwd cannot access parent directories錯誤解決方法,在Linux下執(zhí)行命令時有時會無意中遇到這個錯誤,這只是一個意外錯誤,解決方法很簡單,需要的朋友可以參考下2015-01-01
一天一個shell命令 linux文本操作系列-head,tail命令詳解
這篇文章主要介紹了一天一個shell命令 linux文本操作系列-head,tail命令詳解,需要的朋友可以參考下2016-06-06

