首页 > 数据库 > 数据库开发技术 > Linux主机双向互信脚本
先放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
自动化运维任务:在自动化运维任务中,经常需要通过SSH连接到多台主机并执行命令或脚本。配置双向互信可以使运维工程师在执行任务时免去输入密码的步骤,提高效率。
集群管理:在构建集群环境时,主机之间需要进行协调和通信。通过配置双向互信,可以方便地在集群中的各个节点之间进行SSH连接和操作。
分布式系统:分布式系统通常由多个节点组成,节点之间需要进行数据同步、协调和通信。通过配置双向互信,可以简化节点之间的认证过程,提高系统的可靠性和稳定性。
自动化部署:在自动化部署过程中,常常需要在多台主机上执行相同的部署脚本或命令。通过配置双向互信,可以方便地在各个主机之间进行部署操作,提高部署效率和一致性。
# 主机列表hosts=("user1@host1""user2@host2""user3@host3")# 密码password="password"# 生成SSH密钥对generate_ssh_key() {local host=$1local key_file=~/.ssh/id_rsa_$hostif [ ! -f $key_file ]; thenssh-keygen -t rsa -f $key_file -N ""fi}# 复制公钥到其他主机copy_public_key() {local host=$1local key_file=~/.ssh/id_rsa_$hostfor target_host in "${hosts[@]}"; doif [[ $target_host != $host ]]; thensshpass -p "$password" ssh-copy-id -i $key_file.pub $target_hostfidone}# 设置双向互信setup_ssh_trust() {local host=$1local key_file=~/.ssh/id_rsa_$hostfor target_host in "${hosts[@]}"; doif [[ $target_host != $host ]]; thensshpass -p "$password" ssh -i $key_file $target_host "mkdir -p ~/.ssh && grep -qxF '$(cat $key_file.pub)' ~/.ssh/authorized_keys || echo '$(cat $key_file.pub)' >> ~/.ssh/authorized_keys"fidone}# 并行执行函数parallel_execute() {local func=$1for host in "${hosts[@]}"; do$func "$host" &donewait}# 并行生成SSH密钥对parallel_execute generate_ssh_key# 并行复制公钥到其他主机parallel_execute copy_public_key# 并行设置双向互信parallel_execute setup_ssh_trustecho "双向互信设置完成"
请确保在执行脚本之前,你已经正确设置了主机列表和密码,并且具备执行脚本的权限。另外,建议在执行脚本之前,确保主机之间可以正常通信,并且已经安装了sshpass和parallel-ssh工具,以便脚本顺利执行。
结束!如有不足之处,欢迎指正!
我们的组织在这里:


原文作者:运维book思议;如有侵权,请联系管理员删除。