Linux批量设置免密登录shell脚本

一:话不多说,直接上脚本

#!/bin/bash

# 用户名和密码配置
USERNAME="root"
PASSWORD="123456"
NEW_ROOT_PASSWORD='root@123'

# 转义新的 root 密码以安全地传递给远程 shell
ESCAPED_PASSWORD=$(printf '%q' "$NEW_ROOT_PASSWORD")

# 主机列表
HOSTS=(
  192.168.60.36,
  192.168.60.37,
  192.168.60.38,
)

# SSH 免密登录设置
for HOST in "${HOSTS[@]}"; do
    echo "Setting up key-based SSH for ${HOST}..."
    sshpass -p "${PASSWORD}" ssh-copy-id -o StrictHostKeyChecking=no "${USERNAME}@${HOST}"
done

# 允许 root 登录并设置 root 密码

for HOST in "${HOSTS[@]}"; do
    echo "Configuring ${HOST} to allow root login and setting new root password..."
    ssh -t "${USERNAME}@${HOST}" "echo '${PASSWORD}' | sudo -S sh -c 'sed -i \"s/^#PermitRootLogin prohibit-password/PermitRootLogin yes/\" /etc/ssh/sshd_config; echo root:${ESCAPED_PASSWORD} | chpasswd; service sshd restart'"
    # 获取 IP 地址的最后一位
    LAST_OCTET=$(echo "$HOST" | grep -oP '\.\K\d+$')
    # 设置主机名为 node-<last_octet>
    NEW_HOSTNAME="node-$LAST_OCTET"
    echo "————————————设置root免密——————"
    sshpass -p "$NEW_ROOT_PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub "root@$HOST"
    echo "——————————设置主机hostname——————————"
    ssh -t "root@$HOST" "echo '${NEW_ROOT_PASSWORD}' | sudo -S hostnamectl set-hostname $NEW_HOSTNAME"
  done

二:执行结果

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值