一:话不多说,直接上脚本
#!/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
二:执行结果
![](https://img-blog.csdnimg.cn/direct/c61003264e0948ac83ea6ad03506d408.png)