zoukankan      html  css  js  c++  java
  • 批量免密ssh

    参考连接:https://www.cnblogs.com/xiaoyuxixi/p/11413355.html

    适用于所有密码都一样的情况下

    应用场景:

    在应用ansible的实际情况中,有一个很现实的问题,ansible是需要对主机做ssh免密登陆的,而挨个对主机做免密是非常的繁琐的,挨个敲IP不仅非常的繁琐而且容易出错,为解决这个问题,为以后使用ansible时的便捷,写了一个小脚本,实现批量对主机的免密配置:

    脚本内容如下

       

       

    #!/bin/bash

    #在根目录下创建address文件,一行一个ip地址,将所有需要免密的主机ip填入

    User=root

    passWord=123

    address=`cat /address`

    rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null

    if [ $? -gt 0 ];then

    yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)

    fi

    [ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.ssh

    echo "正在创建密钥对...."

    rm -rf ~/.ssh/*

    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" &>/dev/null

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

    for ip in $address

    do

    ping $ip -c1 &>/dev/null

    if [ $? -gt 0 ];then

    echo "$ip无法ping通请检查网络"

    continue

    fi

    sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${User}@$ip &>/dev/null

    echo "$ip 密钥分发成功"

    done

       

       

    小结:

    需要注意的是,对第一次免密配置失败的主机,不可再用此脚本进行第二次配置,否则第一次配置成功的机器会失效,可以将脚本中创建密钥的部分注释,然后进行配置,最后,需要注意的是,脚本调用的IP地址的信息来自于/address文件中的信息,脚本中并没有写出判断,想来能应用ansible的必不会是新手,这种低级错误应该不会发生。

  • 相关阅读:
    内存分配略谈
    变量声明顺序和指针偏移问题示例
    解决You have to be inside an Angular CLI project in order to use the serve command
    Linux中将命令放到全局
    Linux设置vim显示行号
    根据指定的excel模板导出数据
    解决 Maven工程运行报错Failed to clean project: Failed to delete
    springcloud工作用常用到的一些注解
    cmd窗口备份mysql数据库
    调用存储过程msql
  • 原文地址:https://www.cnblogs.com/withfeel/p/14267111.html
Copyright © 2011-2022 走看看