当前位置: 代码网 > 服务器>服务器>Linux > Shell脚本实现服务器多台免密登录操作

Shell脚本实现服务器多台免密登录操作

2025年04月24日 Linux 我要评论
简介本脚本(auto_ssh_batch.sh)用于在多台主机之间快速配置ssh免密登录,并支持远程传输脚本/文件及执行命令。通过pass文件提供统一认证凭据,通过nodes文件定义目标主机列表,实现

简介

本脚本(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/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.shpassnodessshpass 上传到目标主机的 /tmp
    • 远程执行:在目标主机上运行 generate_ssh_key.sh

注意事项

  • 安全性警告
    • nodes 文件中密码以明文存储,建议仅在受信任环境使用。
    • 脚本使用 -o stricthostkeychecking=no,自动信任主机密钥,可能存在中间人攻击风险。
  • 错误处理
    • 若某主机公钥分发失败,脚本会跳过该主机继续执行。
    • 传输文件或远程命令失败时,查看错误输出并检查网络连通性。
  • 日志输出执行过程中会显示详细日志,包括成功/失败的主机ip及操作状态。

通过以上步骤,您可快速完成多主机ssh免密登录配置及批量远程操作。

到此这篇关于shell脚本实现服务器多台免密的文章就介绍到这了,更多相关shell服务器多台免密内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com