SSH配置批量免密登录(建立互信)

1、背景介绍:

        之前写过一篇关于两台服务器之间建立互信的文章,但是现在遇到的问题是20台ECS服务器之间都需要建立互信。如果还是用之前的方法,创建秘钥,scp公钥到其他的服务器授信文件,这样的操作在多台服务器之间显然效率低还容易出错。

2、解决思路:

        创建秘钥就不用多说,注意位数(4096),等级高点。

        解决难点:多次手动scp到其他服务器。创建一个单独的hosts.txt文件,专门存放服务器列表,然后通过脚本遍历列表,自动复制文件。为保证安全,密码需要单独输入。

3、实现步骤:

1、创建存放脚本文件的目录:

  mkdir /root/c_ssh

2、创建hosts.txt

vim hosts.txt

server1.example.com
192.168.1.100
#server2.example.com  # 注释行会被跳过

3、创建可执行脚本文件

vim setup_ssh_keys.sh

#!/bin/bash

# 检查是否提供了用户名
if [ -z "$1" ]; then
    echo "Usage: $0 username"
    exit 1
fi

USERNAME="$1"
HOSTSFILE="hosts.txt"

# 检查 hosts 文件是否存在
if [ ! -f "$HOSTSFILE" ]; then
    echo "Error: File $HOSTSFILE not found!"
    exit 1
fi

# 检查并创建 .ssh 目录
SSHDIR="$HOME/.ssh"
SSHKEY="$SSHDIR/id_rsa"

# 创建 .ssh 目录(如果不存在)
mkdir -p "$SSHDIR"
chmod 700 "$SSHDIR"

# 生成 SSH 密钥对(如果还没有的话)
if [ ! -f "$SSHKEY" ]; then
    echo "Generating SSH key pair..."
    ssh-keygen -t rsa -b 4096 -f "$SSHKEY" -N "" -q
    if [ $? -ne 0 ]; then
        echo "Error: Failed to generate SSH key pair."
        exit 1
    fi
    echo "SSH key pair generated successfully."
else
    echo "SSH key pair already exists."
fi

# 读取 hosts.txt 文件并分发公钥
echo "Starting SSH key distribution..."
while read -r HOST; do
    # 跳过空行和注释行
    if [ -z "$HOST" ] || [[ "$HOST" == \#* ]]; then
        continue
    fi

    echo "Processing host: $HOST"
    
    # 复制公钥到远程主机
    ssh-copy-id -i "$SSHKEY.pub" "$USERNAME@$HOST"
    if [ $? -eq 0 ]; then
        echo "Successfully added key to $USERNAME@$HOST"
    else
        echo "Error: Failed to add key to $USERNAME@$HOST"
    fi
done < "$HOSTSFILE"

echo "SSH key distribution completed."

4、给执行权限:

chmod +x setup_ssh_keys.sh

4、效果展示:

192.168.254.1311
192.168.254.1302
192.168.254.1293

规划:从1通过root/web**与2/3建立互信,实现免密登录。

1、root用户

执行过程:

执行结果:

2、web**用户:

执行过程:

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值