当前位置: 首页 > news >正文

Linux 批量配置互信

批量配置SSH互信脚本

#!/bin/bash# 定义目标机器列表
machines=(
"192.168.122.87"
"192.168.122.89"
"192.168.122.90"
)
set -o errexit
# 设置默认的用户名和密码
default_username="root"
default_password="111111"# 读取目标机器的用户名和密码
read -p "Enter username [$default_username]: " username
read -s -p "Enter password [$default_password]: " password
echo# 使用默认值,如果没有输入用户名或密码
if [[ -z $username ]]; thenusername=$default_username
fiif [[ -z $password ]]; thenpassword=$default_password
fiif command -v sshpass &> /dev/null
thenecho "sshpass command is available"
elseecho "sshpass command is not available"##### yum install if [ -x /usr/bin/yum ]; thenecho "Try to execute yum install.."yum -y install sshpasselseecho "ERROR: An exception occurred during the installation of sshpass ! "exit -1fi
fifunction chk_ssh(){# ssh 公私钥路径ssh_dir="$HOME/.ssh"private_key="$ssh_dir/id_rsa"public_key="$ssh_dir/id_rsa.pub"# 检查~/.ssh目录是否存在if [ ! -d "$ssh_dir" ]; thenmkdir -p "$ssh_dir"fi# 检查是否存在私钥和公钥文件if [ ! -f "$private_key" ] || [ ! -f "$public_key" ]; then# 生成密钥文件ssh-keygen -t rsa -b 2048 -N "" -q -f "$private_key"echo "Generated new SSH key pair: $private_key and $public_key"elseecho "SSH key pair already exists: $private_key and $public_key"fi
}# 循环遍历目标机器列表,判断主机是否有密钥
for machine in "${machines[@]}"
doecho "Configuring passwordless access for $machine"sshpass -p "$password" ssh -o StrictHostKeyChecking=no $username@$machine "bash -s" << EOF
# 将本地函数chk_ssh传递给远程服务器
$(declare -f chk_ssh)  
chk_ssh
EOF
done# 循环遍历目标机器列表,获取公钥
rm -f /tmp/authorized_keys
for machine in "${machines[@]}"
doecho "Get the public key file in $machine to authorized keys"# sshpass -p "$password" ssh-copy-id -o StrictHostKeyChecking=no $username@$machinesshpass -p "$password" ssh -o StrictHostKeyChecking=no $username@$machine "cat ~/.ssh/id_rsa.pub " >> /tmp/authorized_keys
done# 下发认证文件
for machine in "${machines[@]}"
doecho "Configuring passwordless access for $machine"sshpass -p "$password" scp -o StrictHostKeyChecking=no /tmp/authorized_keys $username@$machine:$HOME/.ssh
doneif [ $? == 0 ]
thenecho "Passwordless access configured successfully for all machines."rm -f /tmp/authorized_keys
fi
http://www.lryc.cn/news/483097.html

相关文章:

  • 设计定长的内存池
  • 【动手学电机驱动】 STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环
  • 无人机飞手考证,地面站培训技术详解
  • 音视频入门基础:MPEG2-TS专题(3)——TS Header简介
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • 基于物联网的智能超市快速结算系统
  • 241111.学习日志——[CSDIY] Cpp零基础速成 [00]
  • 湘潭大学软件工程算法设计与分析实验-模拟退火算法
  • Three.js 零基础+概念理解
  • c#使用COM接口设置excel单元格宽高匹配图片,如何计算?
  • Excel模板下载\数据导出
  • Vite初始化Vue3+Typescrpt项目
  • 深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅
  • 地级市能源消耗数据(2006至2021)含原始数据、计算过程、计算结果-最新出炉
  • MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并
  • AutoSAR CP DoIP规范导读
  • Window下PHP安装最新sg11(php5.3-php8.3)
  • 2024华为OD机试真题---中文分词模拟器
  • Kubernetes网络揭秘:从DNS到核心概念,一站式综述
  • C#封装EPPlus库为Excel导出工具
  • 【LeetCode】【算法】461. 汉明距离
  • Docker Compose部署Rabbitmq(延迟插件已下载)
  • 生信技能62 - 常用机器学习算法的R语言实现
  • 【3D Slicer】的小白入门使用指南二
  • 部署搭建AI相关项目时,不用魔法也能轻松自动下载所需大模型
  • zookeeper之节点基本操作
  • 技术最好 ≠ 最适合:数字化转型切忌盲目追求最先进的技术
  • 数字IC后端教程之Innovus hold violation几大典型问题
  • rust并发
  • 力扣 最小路径和