【Linux】【shell】ssh互信脚本,亲测很实用

【Linux】【shell】ssh互信脚本,亲测很实用

在Linux服务器的日常管理中,SSH互信是一个非常重要的功能,它允许我们无需输入密码即可在服务器之间进行安全访问。但是,手动设置SSH互信可能会非常繁琐,特别是当我们需要在多台服务器之间建立互信关系时。

我有一个项目,需要给77台centos7系统的虚拟机配置互信,但是一台一台配置,谁看了都脑袋疼。。。为了简化这个过程,我编写了一个自动化的SSH互信脚本,以下是脚本的详细内容和使用说明。

脚本功能

该脚本能够自动完成以下任务:

  1. 检查本地用户的默认SSH密钥对是否存在,如果不存在则自动生成。
  2. 读取用户指定的机器列表文件,每行一个主机地址。
  3. 为每台主机自动设置SSH互信,无需用户输入密码。

使用前提

  • 确保已安装sshpass工具,用于自动输入SSH密码。没有这个工具的安装一下

    yum install sshpass
    
  • 用户的.ssh目录中没有默认密钥对或允许脚本生成新的密钥对。

脚本内容

#!/bin/bash

# 读取机器列表
read -p "请输入机器列表文件路径(每行一个主机地址): " machines_file

# 获取当前用户的默认SSH密钥路径
default_private_key="$HOME/.ssh/id_rsa"
default_public_key="$default_private_key.pub"

# 检查并生成默认SSH密钥对
if [ ! -f "$default_private_key" ]; then
    echo "默认SSH私钥不存在,程序将自动为您创建一个新的SSH密钥对。"
    ssh-keygen -t rsa -b 2048 -f "$default_private_key" -N "" -q
fi

# 读取统一的SSH密码
read -s -p "请输入统一的SSH密码: " ssh_password
echo

# 遍历机器列表,复制公钥到每台主机
while IFS= read -r host
do
    echo "正在设置与 $host 的SSH互信..."
    sshpass -p "$ssh_password" ssh -o StrictHostKeyChecking=no "root@$host" << EOF
    mkdir -p ~/.ssh
    [ -f ~/.ssh/authorized_keys ] || touch ~/.ssh/authorized_keys
    cat >> ~/.ssh/authorized_keys <<< "$(cat $default_public_key)"
EOF
    
    if [ $? -eq 0 ]; then
        echo "与 $host 的SSH互信设置成功"
    else
        echo "与 $host 的SSH互信设置失败,请检查是否能SSH访问 $host"
    fi
done < "$machines_file"

echo "所有机器的SSH互信设置完成。"

使用步骤

  1. 准备机器列表文件:创建一个文本文件,每行包含一个要设置互信的服务器的地址。可以在脚本的同级目录创建一个host文件,执行时直接输入host
  2. 赋予脚本执行权限:在终端中运行chmod +x ssh_trust_setup.sh
  3. 执行脚本:在终端中运行./ssh_trust_setup.sh并按照提示操作。

注意事项

  • 脚本会自动检查并生成默认SSH密钥对,如果已存在则不会重复生成。
  • 请确保所有目标服务器允许root用户SSH登录,并且SSH服务配置允许使用密码认证。
  • 脚本里输入统一的密码,所以密码不一样的,请绕行。。

结语

通过这个脚本,我们可以大大简化SSH互信的设置过程,提高服务器管理的效率。希望这个脚本对大家的工作有所帮助。如果您有任何问题或建议,欢迎在评论区交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术的小伙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值