大家好,这里是 DBA 学习之路,专注于提升数据库运维效率。

@TOC

前言

大家好,我又双叒叕来送福利了,这次是 SSH 一键互信脚本,贼拉好用~

关注公众号:DBA学习之路,聊天框回复:ssh_trust 下载脚本。

在 Linux 主机上进行集群部署或者批量运维过程中,很多情况下都需要配置多台主机间的 SSH 免密登录(互信),传统的手动配置方式需要重复执行多个操作:生成 SSH 密钥对、分发公钥到各个节点、确认主机指纹等,不仅耗时费力,还容易因人为操作失误导致配置错误。

随着运维规模的扩大,这种重复性工作的痛点愈发明显。为了解决这个问题,我开发了一个 SSH 一键互信脚本 ssh_trust.sh,能够自动化完成整个配置过程,大大提升运维效率。

脚本介绍

本脚本 ssh_trust.sh 是一个全自动化的 SSH 互信配置工具,支持一键自动化配置多台 Linux 主机之间的 SSH 免密登录(互信),可以指定当前用户其他用户(需要在 root 下执行)进行批量操作,适用于集群部署、批量管理等场景。

  • 批量配置:一次性处理多台主机的互信设置
  • 用户灵活性:支持当前用户或指定用户的互信配置
  • 智能检测:自动检查互信状态,避免重复配置
  • 依赖管理:自动安装必需的 expect 工具

💡 脚本具备以下智能化功能:

  1. 防重复执行:自动检测已有互信配置,跳过已完成的主机
  2. 实时进度反馈:动态显示配置进度和状态信息
  3. 完善错误处理:针对网络异常或认证失败提供清晰的错误提示

参数详解

脚本采用命令行参数方式运行:

参数 必填 说明
-p 目标主机的 SSH 登录密码(所有主机需密码一致)
-i 目标主机 IP 列表,用逗号分隔(如 "192.168.1.1,192.168.1.2"
-u 指定目标用户(默认使用当前用户)

运行 ./ssh_trust.sh -h 可查看详细使用帮助:

image.png

使用指南

在使用脚本前,请确保满足以下条件:

  1. 密码统一性:所有目标主机的指定用户 SSH 密码必须相同;
  2. 网络连通性:执行脚本的主机能够通过 SSH 访问所有目标 IP;
  3. 权限管理
    • 配置当前用户互信:使用当前用户身份执行即可;
    • 配置其他用户互信:必须使用 root 权限执行;
  4. 系统依赖:脚本会自动检查并安装 expect 工具(需要 yum 可用,仅限 root 用户,其他用户需要提前安装)

基础命令格式

1
2
3
4
5
6
7
./ssh_trust.sh -u "用户名" -p "目标主机密码" -i "IP1,IP2,IP3,..."  
```
### 配置当前用户
无需指定用户名,直接默认当前用户:
```bash
# 当前用户是 dev_user,配置三台主机的互信
./ssh_trust.sh -p 'oracle' -i "10.168.1.110,10.168.1.111,10.168.1.112"

配置指定用户

需要在 root 用户下执行才能指定其他用户执行:

1
./ssh_trust.sh -u oracle -p 'oracle' -i "10.168.1.110,10.168.1.111"  

如果在非 root 用户指定其他用户执行,会报错:

在 root 用户下则可以正常使用:

image.png

重复执行,有互信校验,如果已经互信完成,则不再执行互信:

image.png

写在最后

SSH 一键互信脚本通过自动化手段解决了 Linux 集群部署中的重复性配置工作,具有以下显著优势:

  • 效率提升:从手动配置几十分钟缩短到脚本执行几秒钟;
  • 错误减少:自动化操作避免了人为配置错误;
  • 操作简化:一条命令完成多台主机的互信配置;
  • 安全可靠:内置权限检查和重复执行保护机制;

无论是 DevOps 工程师进行集群部署,还是系统管理员进行批量运维,这个脚本都能显著提升工作效率。在 AI 技术的加持下,类似的运维自动化工具将越来越普及,帮助我们告别重复性的手工操作。

💡 温馨提示:首次使用建议在非生产环境中进行充分测试,确认脚本行为符合预期后再应用到生产环境。