zoukankan      html  css  js  c++  java
  • 批量的单向的ssh 认证

    <pre name="code" class="python">if [  ! $# -eq 2  ] ;then
    echo "请输入用户密码以空格分开"
    exit
    else
    ssh-keygen -t rsa
    #用户名
    uname="$1"
    #密码
    passwd="$2"
    fi
    
    
    #执行检测并安装expect模块
    ep=`rpm -qa | grep expect` 
    
    if [ -z $ep   ] ; then
     echo "检测到你的系统,没有安装expect模块,准备执行安装"
     sleep 2
     yum install -y expect
    
    else
     echo "已经安装expect模块,3秒后,开始执行ssh文件同步"
     sleep 3
    fi
    
    
    
    #公钥无ssh认证模块
    cat hosts | while read host
    do
    
    
    
    echo "当前正在向$host上传输ssh文件"
    expect <<EOF
    spawn  scp -r .ssh/  $host:/$uname 
    expect {
    "*yes/no" {send "yes
    " ;exp_continue}
    "*password:" {send "$passwd
    " ;exp_continue  }
    }
    
    
    EOF
    
    
    
    
    
    echo "当前正在$host上进行公钥认证....."
    sleep 2
    expect <<EOF
    spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host 
    expect {
    "*yes/no" {send "yes
    " ;exp_continue}
    "*password:" {send "$passwd
    " ;exp_continue  }
    }
    
    
    EOF
    
    echo "认证成功...."
    
    done
    
    
    
    
    #切换root权限进行hosts文件分发
    
    
    
    echo "同步本机的hosts文件到各个机器上"
    
    sleep 1
    
    #同步本机的hosts文件到其他各个机器上
    
    
    
    host文件内容:
    
    192.168.32.84上执行这个文件,
    
    demo:/root# cat hosts 
    192.168.32.142
    192.168.32.143
    
    此时从192.168.32.84上发起,可以远程ssh :
    
    反过来在192.168.32.143上执行就不可以:
    
    wze-haproxy:/root# ssh root@192.168.32.84 date
    root@192.168.32.84's password: 
    
    
    
    


    
       
    
    
  • 相关阅读:
    进程与线程
    Socket函数编程(二)
    socket编程
    subprocess 模块
    异常处理
    模块与包
    【Java基础】String源码分析
    【MySQL】 执行计划详解
    【MySQL】performance schema详解
    【Spring Cloud-Open Feign】使用OpenFeign完成声明式服务调用
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6200092.html
Copyright © 2011-2022 走看看