Linux 批量设置机器免密登录

1.问题背景

私有化交付场景,经常需要配置跳板机到其他机器列表的免密登录; 比如 sealos安装一个Kubernetes集群、或者跳板机scp传包到其他机器,配置免密登录可以加速后续部署效率。

2.方案

可以使用如下脚本完成批量机器免密登录设置
vi copy_ssh_key.sh

#!/bin/bash

# 检查参数数量
if [ "$#" -lt 3 ]; then
    echo "Usage: $0 'host1ip host2ip host3ip' your_username your_password"
    exit 1
fi

# 从参数中获取目标机器、用户名和密码
TARGET_HOSTS=($1) # 第一个参数转换为数组
USER=$2          # 第二个参数为用户名
PASSWORD=$3      # 第三个参数为密码

# 生成 SSH 密钥对(如果尚未生成)
if [ ! -f ~/.ssh/id_rsa ]; then
    echo "Generating SSH key pair..."
    ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""
else
    echo "SSH key pair already exists."
fi

# 将公钥复制到目标机器
for HOST in "${TARGET_HOSTS[@]}"; do
    echo "Copying SSH key to $HOST..."
    sshpass -p "$PASSWORD" ssh-copy-id -i ~/.ssh/id_rsa.pub "$USER@$HOST"
done

echo "All done!"

脚本使用说明: 此脚本为批量设置跳板机到其他机器免密登录脚本
1.赋予脚本执行权限
chmod +x copy_ssh_key.sh
2.运行脚本,传入主机ip列表、用户名和密码。请注意,目标主机ip列表应包含在单引号内,以空格分隔
bash copy_ssh_key.sh 'host1 host2 host3' username password
bash copy_ssh_key.sh '192.168.0.1 192.168.0.2 192.168.0.3' root 123456

3.前置条件

确保你机器上有 sshpass 工具。如果未安装,可以通过以下命令安装:

#Ubuntu
sudo apt-get install sshpass
#CentOS
 sudo yum install sshpass
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容