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: 
    
    
    
    


    
                                        
    
  • 相关阅读:
    Codeforces Round #407 (Div. 2)A B C 水 暴力 最大子序列和
    Codeforces Round #358 (Div. 2) A B C 水 水 dfs序+dp
    51nod 1225 数学
    HDU 4584 splay
    bzoj 1588 平衡树 splay
    HDU 4722 数位dp
    Kubernetes 自动伸缩 auto-scaling
    转发一篇能看懂的关于ingress的说明
    Http 安全检测
    mdadm 软RAID
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350818.html
Copyright © 2011-2022 走看看