Linux 集群使用 Shell 脚本自动完成免密登录

在部署 Linux 集群环境的时候,时钟同步 (NTP) 必定用到,而某些时候可能也需要用到主机免密登录,5 节点以下还可以手动配置,但如果节点规模较大,则需要考虑自动化了。

使用 Shell 脚本简单快速,上手容易。

代码如下,请自行按需要修改,比较容易理解。

 

#!/bin/bash
# by liuxg
# 2019.05.15
# passwdless.sh


# echo 
    # -n 不要在最后自动换行
    # -e 处理特殊字符


# expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
# expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。
# expect需要Tcl编程语言的支持,要在系统上运行expect必须首先安装Tcl。(源码安装要注意)

yum install expect -y  #安装expect
echo "按enter键3次即可"

# 生成秘钥(按enter键3次即可生成)
ssh-keygen -t rsa   

SERVERS="172.18.74.167 172.18.74.169 172.18.74.172 172.18.74.173 172.18.74.174"   #需要配置的主机名
#SERVERS="m1 m2 m3 n1 n2"
PASSWORD=123456   #需要配置的主机登录密码
 
#将本机生成的公钥复制到其他机子上
#如果(yes/no)则自动选择yes继续下一步
#如果password:怎自动将PASSWORD写在后面继续下一步
auto_ssh_copy_id(){
        expect -c "set timeout -1;
        spawn ssh-copy-id $1;                                
        expect {
                *(yes/no)* {send -- yes\r;exp_continue;}
                *password:* {send -- $2\r;exp_continue;}  
                eof        {exit 0;}
        }";
}

ssh_copy_id_to_all(){
        for SERVER in $SERVERS #遍历要发送到各个主机的ip
        do
                auto_ssh_copy_id $SERVER $PASSWORD
        done
}
ssh_copy_id_to_all
passwordless.sh

 

转载于:https://www.cnblogs.com/liuxgcn/p/11154628.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值