Linux一键配置多台服务器免密登录脚本

安装tcl、expect相关运行软件:

# CentOS系统
yum install tcl -y
yum install expect -y

# Ubuntu系统
sudo apt install tcl -y
sudo apt install expect -y

一键免密配置脚本需要每台服务器的用户名和密码保持一致,以下为shell脚本:

#!/bin/bash

if [ "$#" -lt 2 ]; then
        echo "Usage:./generate_ssh_key.sh [user] [password]"
        exit 2
fi

user=$1
password=$2
hosts="slave1.bigdata.com slave2.bigdata.com slave3.bigdata.com slave4.bigdata.com"

echo "================= 程序开始运行  ==================="
for host in ${hosts}
do
    echo ================= $host ===================
    expect -c "
      set timeout 2;
      spawn ssh ${user}@$host
      expect {
      *yes/no* { send \"yes\\n\"; exp_continue; }
      *password* { send \"${password}\\n\" }  
      }
      sleep 1
      send \"ssh-keygen -t rsa\\n\"
      expect {
      *id_rsa* { send \"\\n\"; exp_continue; }
      *y/n* {set timeout 5; send \"y\\n\"; exp_continue; }
      *passphrase* {set timeout 5; send \"\\n\"; exp_continue; }
      *again* {set timeout 5; send \"\\n\" }
      }
      sleep 1
      foreach target {${hosts}} {
        send \"ssh-copy-id \$target\\n\"
        expect {
          *connecting* {set timeout 5; send \"yes\\n\"; exp_continue;}
          *password* {set timeout 5; send \"${password}\\n\";}
        }
        sleep 1
      }
    "
done

echo "================= 程序结束运行  ==================="

user=免密登录用户
password=免密登录用户密码
hosts=需要配置免密登录的服务器
注意:需要保持免密登录用户的文件权限为750,免密登录用户下的.ssh文件权限为700。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值