美文网首页
使用expect批量分发公钥 ssh免密码登录

使用expect批量分发公钥 ssh免密码登录

作者: phper1021 | 来源:发表于2017-02-07 10:45 被阅读293次

    安装expect

    yum install expect
    

    生成公钥和私钥

    cd ~/.ssh/
    ssh-keygen -t rsa  #一直回车,采用默认的文件名字,使用空密码,会得到id_rsa和id_rsa.pub文件
    

    批量部署ssh公钥到目标机器

    cd /tmp/
    
    ip.txt(前面是IP,后面是密码,用冒号:分割)    
    ===============================
    192.168.44.11:vagrant
    192.168.44.12:vagrant
    192.168.44.13:vagrant
    ===============================
    remote_operate.sh(把该文件的权限设置为777,防止在目标主机执行时报没有权限错误)
    #!/bin/bash
    if [ ! -d /root/.ssh ];then
    mkdir /root/.ssh
    fi
    cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
    ===============================
    batch_sshkey.sh(把id_rsa.pub和remote_operate.sh拷贝到目标机器上)
    #!/bin/bash
    for i in `cat /tmp/ip.txt`
    do
    ip=$(echo "$i"|cut -f1 -d":")
    password=$(echo "$i"|cut -f2 -d":")
    
    expect -c "
    spawn scp /root/.ssh/id_rsa.pub /tmp/remote_operate.sh  root@$ip:/tmp/
            expect {
                    \"*yes/no*\" {send \"yes\r\"; exp_continue}
                    \"*password*\" {send \"$password\r\"; exp_continue}
                    \"*Password*\" {send \"$password\r\";}
            }
    "
    expect -c "
    spawn ssh root@$ip "/tmp/remote_operate.sh"
            expect {
                    \"*yes/no*\" {send \"yes\r\"; exp_continue}
                    \"*password*\" {send \"$password\r\"; exp_continue}
                    \"*Password*\" {send \"$password\r\";}
            }
    "
    done
    ===============================
    

    执行脚本

    /bin/bash  batch_sshkey.sh
    

    登录目标主机

    ssh root@192.168.44.11
    exit
    ssh root@192.168.44.12
    exit
    ssh root@192.168.44.13
    exit
    

    原理

    所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

    总结

    • 实现免密码登录目标机器,只需要把当前机器的id_rsa.pub内容追加到目标机器的/root/.ssh/authorized_keys中去。
    • 使用except可以批量往目标机器分发文件,在目标机器执行分发过去的文件

    相关文章

      网友评论

          本文标题:使用expect批量分发公钥 ssh免密码登录

          本文链接:https://www.haomeiwen.com/subject/cgmpittx.html