Shell脚本实现服务器多台免密
简介
本脚本(auto_ssh_batch.sh)用于在多台主机之间快速配置SSH免密登录,并支持远程传输脚本/文件及执行命令。通过 pass 文件提供统一认证凭据,通过 nodes 文件定义目标主机列表,实现批量自动化操作。
下载
git clone https://gitee.com/wesley_li0/NoPassword.git
特别说明(公司):
使用非root用户需要创建用户并添加root组,并且配置信任的sudo权限,可以使用命令实现
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
前提条件
- 操作系统:目标主机需为 RHEL/CentOS 7 系统(因依赖 
sshpass-1.06-2.el7.x86_64.rpm)。 - 权限要求:
- 执行脚本的主机需具有root权限以安装 
sshpass。 - 所有目标主机的SSH服务已启动,且防火墙允许SSH端口(默认22)通信。
 - 所有主机用户名密码一致(免密完成后需改密码不影响免密)
 
 - 执行脚本的主机需具有root权限以安装 
 
文件准备:确保以下文件及目录结构存在:
/root/NoPassword/             # 脚本存放与用户家目录下
├── auto_ssh_batch.sh         # 主执行脚本
├── bin
│   └── generate_ssh_key.sh   # 待分发的远程执行脚本
├── config
│   └── nodes                 # 存储目标主机IP和节点ID
└── main
    └── sshpass-1.06-2.el7.x86_64.rpm  # sshpass安装包
配置文件格式
**nodes**** 文件**
每行定义一个目标主机的IP和节点ID (ID尽量与后续集群自动化脚本ID一致,若无执行集群脚本需求,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/` 目录。
赋予执行权限,并执行脚本
sudo chmod +x auto_ssh_batch.sh
sudo sh auto_ssh_batch.sh
# 脚本运行结束后使用ssh验证
# 默认ssh端口
ssh username@ip
# 指定ssh端口
ssh -p xx username@ip
-------------------------脚本使用到此结束--------------------
脚本执行流程
- 文件检查
验证config/pass和config/nodes是否存在,格式是否正确。 - 初始化环境
- 生成本地SSH密钥对(如不存在)。
 - 安装 
sshpass(若未安装)。 
 - 批量操作
遍历nodes文件中的每个IP:- 分发公钥:使用 
sshpass将公钥复制到目标主机,实现免密登录。 - 传输文件:将 
generate_ssh_key.sh、pass、nodes、sshpass上传到目标主机的/tmp。 - 远程执行:在目标主机上运行 
generate_ssh_key.sh。 
 - 分发公钥:使用 
 
注意事项
- 安全性警告
- nodes 文件中密码以明文存储,建议仅在受信任环境使用。
 - 脚本使用 
-o StrictHostKeyChecking=no,自动信任主机密钥,可能存在中间人攻击风险。 
 - 错误处理
- 若某主机公钥分发失败,脚本会跳过该主机继续执行。
 - 传输文件或远程命令失败时,查看错误输出并检查网络连通性。
 
 - 日志输出
执行过程中会显示详细日志,包括成功/失败的主机IP及操作状态。 
通过以上步骤,您可快速完成多主机SSH免密登录配置及批量远程操作。
Shell脚本实现服务器多台免密的更多相关文章
- 【Linux】服务器之间的免密登录脚本
		
在实际运维的过程中,经常需要用到免密登录,下面这个脚本实现服务器之间的免密登录,如下 比如,要实现A服务器与B.C.D服务器的免密登录,只需要将B.C.D服务器的IP地址写在serverlist.tx ...
 - 多台centos7服务器实现SSH免密登陆
		
一.环境 centos7.x 三台 node1.node2.node3 二.实现免密登陆 2.1.node1上,生成公钥与私钥 [root@node1 ~]# ssh-keygen Generatin ...
 - shell脚本批量配置多台主机静态ip
		
关于脚本 服务器使用之前,都需要先配置静态IP,那就将这种简单重复的工作,交给脚本来处理吧,让我们运维有更多的时间喝茶看报刷微博 脚本使用 sh ssh.sh ip.txt ssh.sh 为脚本的名称 ...
 - Linux网络第四章:SSH远程管理及通过SSH实现服务器之间的免密连接
		
目录 一.SSH远程管理基础 1.ssh协议 2.ssh原理 3.配置文件解析 4.登录方法 5.使用ssh协议传输的命令 二.免密连接的实现 1.免密连接原理 2.免密实现环境准备 3.在客户端生成 ...
 - Linux shell脚本判断服务器网络是否可以上网
		
Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www ...
 - Shell脚本分析服务器性能
		
概述 我们原先在服务器上想分析性能指标,需要执行一系列的linux命令.对于linux命令不熟悉的人来说,比较困难 现在有一套集成的shell脚本,把常用的linux命令都包含在里面,一键式分析性能瓶 ...
 - 如何用shell脚本取出服务器图片
		
一 ,SHELL 是什么 (1)shell是一种命令行解释器. (2)是用户和Linux内核之间沟通的桥梁,属于中间件.见下图 (3)交互流程:shell接受用户输入的指令 =>将指令传达给Li ...
 - shell 脚本实战笔记(8)--ssh免密码输入执行命令
		
前言: ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才能继续执行. 这样使得脚本的自动化执行变得很差, 尤其当ssh对应的机器数很多的时候, 会令人抓 ...
 - shell脚本查看服务器基本信息
		
#!/bin/sh #电脑概览 #电脑型号 ComputerModel=`/usr/bin/sudo /usr/sbin/dmidecode | grep -A2 "System Infor ...
 - linux生成公钥私钥并上传到服务器上实现免密登陆
		
1. 生成密钥对 # -t 指定加密算法: -b 指定生成的密钥长度: -C 一句话,一般都填邮箱地址. # 更多参数说明可以在终端输入:ssh-keygen --help 查看 ssh-keygen ...
 
随机推荐
- Qt音视频开发21-通用硬解码
			
一.前言 硬件解码是图形芯片厂家提出的用GPU资源解码视频流的方案,与之相对的是软解,也就是传统的用CPU承担解码工作的方案:优点是效率高,功耗低.热功耗低,缺点是缺乏有力的支持(包括滤镜.字幕等), ...
 - [转]C#中委托类型的BeginInvoke和EndEndInvoke方法的理解和应用
			
参考链接: 1.[C#基础]c#中的BeginInvoke和EndEndInvoke 2.C#当中的BeginInvoke和EndInvoke
 - 网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
			
本文由转转QA刘宝成分享,原题"抓包工具wireshark的使用",下文进行了排版和内容优化. 1.引言 跟网络通信有关的应用场景下(比如Web系统.IM聊天应用.消息推送系统等) ...
 - 不为人知的网络编程(十一):从底层入手,深度分析TCP连接耗时的秘密
			
本文作者张彦飞,原题"聊聊TCP连接耗时的那些事儿",有少许改动. 1.引言 对于基于互联网的通信应用(比如IM聊天.推送系统),数据传递时使用TCP协议相对较多.这是因为在TCP ...
 - spark (五) RDD的创建 & 分区
			
目录 1. RDD的创建方式 1.1 从内存创建RDD 1.2 从外部存储(文件)创建RDD 1.3 从其他的RDD创建 1.4 直接 new RDD 2. 分区(partition) 2.1 mak ...
 - OpenMMLab AI实战营 第七课笔记
			
OpenMMLab AI实战营 第七课笔记 目录 OpenMMLab AI实战营 第七课笔记 import os import numpy as np from PIL import Image im ...
 - manim边做边学--动画轨迹
			
本篇介绍Manim中两个和动画轨迹相关的类,AnimatedBoundary和TracedPath. AnimatedBoundary聚焦于图形边界的动态呈现,能精准控制边界绘制的每一帧,助力我们清晰 ...
 - Windows下的GDAL环境配置
			
Windows下的GDAL环境配置 在Windows下GDAL环境的配置方式有很多种,我尝试了很多不同的配置方式,包括Anaconda. GISInternals.QGIS.OSGeo4W等, 我这里 ...
 - linux 安装 Ollama 框架
			
概述 Ollama 是一款旨在简化大语言模型(LLM)本地部署的工具,支持 Windows.Linux 和 MacOS 系统.它提供了一个用户友好的环境,让开发者可以轻松地运行和调优如 Qwen.Ll ...
 - canvas实现抠图,画笔,水印等功能
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...