9人参与 • 2025-04-24 • Linux
本脚本(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
sshpass-1.06-2.el7.x86_64.rpm
)。sshpass
。文件准备:确保以下文件及目录结构存在:
/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 端口指定,修改 `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
是否存在,格式是否正确。sshpass
(若未安装)。nodes
文件中的每个ip:sshpass
将公钥复制到目标主机,实现免密登录。generate_ssh_key.sh
、pass
、nodes
、sshpass
上传到目标主机的 /tmp
。generate_ssh_key.sh
。-o stricthostkeychecking=no
,自动信任主机密钥,可能存在中间人攻击风险。通过以上步骤,您可快速完成多主机ssh免密登录配置及批量远程操作。
到此这篇关于shell脚本实现服务器多台免密的文章就介绍到这了,更多相关shell服务器多台免密内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论