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 ...
随机推荐
- Net6之Jwt认证+Bearer认证 2.0
以前接触过,写过博客,第二次再写有了新的体会.第一次博客:https://www.cnblogs.com/zhang-3/p/16184067.html 过程: 生成token令牌(钥匙) 添加bea ...
- [转]CUDA,NVIDIA Driver,Linux,GCC之间的版本对应关系表格
在安装CUDA时一定要注意其与英伟达显卡驱动以及Linux系统和GCC版本的对应关系,如果版本之间不匹配,是安装不成功的. 一.CUDA与Driver的对应版本 参考链接:https://docs.n ...
- Android SELinux 权限问题总结
SELinux TE 添加权限不生效的解决方法==============================================selinux security level引起的denied ...
- nvme磁盘故障注入方法
本文分享自天翼云开发者社区<nvme磁盘故障注入方法>,作者:曹****飞 在存储系统中,磁盘的故障是很可能出现的问题.存储软件的设计需要对故障进行处理,提高系统的健壮性.然而磁盘的故障是 ...
- 2025苹果春季发布会前瞻:新品迭出,Apple Intelligence国行版即将上线!
随着2025年的到来,苹果公司的春季发布会也渐行渐近.作为科技行业的领军企业,苹果每一次的新品发布都备受瞩目.本次春季发布会,苹果预计会带来一系列令人期待的新品,同时,国行Mac用户也将迎来一个重大更 ...
- 男人八题-点分治-Acwing252.树
Acwing252.树 题目分析 树中的路径分为三种 路径两端在同一个子树 路径两端在不同子树 路径有一端是重心 因此可以分情况处理, 对于第一种情况可以进行递归处理, 第二种情况需要使用容斥原理求得 ...
- [JOI 2020 Final] 火事 题解
给一篇题解.(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\). 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况. 可以将直角 ...
- BUUCTF-Web方向16-20wp
[极客大挑战 2019]PHP 由内容提示应该存在源码备份,常见的如下,一个个尝试 后缀:tar tar.gz zip rar 名字:www web website backup back wwwro ...
- 从android中删除短信
代码如下: getContentResolver().delete(Uri.parse("content://sms/#"),"address=?", new ...
- 移动硬盘插入win10检测到却不显示盘符解决方法
1.开始菜单中的设置-----设备. 2.选择"蓝牙和其他设备" 3.在其他设备栏中就能看到检测到的移动硬盘,点击删除设备后重新插入移动硬盘即可在此电脑上显示盘符.