zoukankan      html  css  js  c++  java
  • ssh多机互信

    #!/bin/bash
    
    os_user= 
    os_password= 
    hosts=' '#多个ip用空格分隔
    
    id $os_user >/dev/null || exit 1
    
    #获取用户家目录
    user_home=$(grep -w $os_user /etc/passwd |cut -d : -f 6)
    
    # 生成ssh从stdin读取免密的脚本
    cat > /tmp/pass << EOF
    #!/bin/bash
    [[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "$@"
    EOF
    chmod a+x /tmp/pass
    
    # 生成密钥文件
    su - $os_user -c "echo $USER; mkdir -p -m 700 .ssh; [ -f .ssh/id_rsa ] && echo '已存在私钥文件 .ssh/id_rsa' || { ssh-keygen -t rsa -f .ssh/id_rsa -P '' >/dev/null && echo '生成私钥文件 .ssh/id_rsa' ||  echo '生成私钥文件失败' ;}"
    
    
    # 获取密钥内容
    id_rsa=$(cat $user_home/.ssh/id_rsa)
    id_rsa_pub=$(cat $user_home/.ssh/id_rsa.pub)
    
    
    
    for host in $hosts;
    do
    	echo "$host: "
    
        echo "$os_password" | /tmp/pass ssh -o StrictHostKeyChecking=no $os_user@$host "mkdir -p .ssh; chmod 700 .ssh;
        echo '$id_rsa' > .ssh/id_rsa && chmod 600 .ssh/id_rsa
        echo '$id_rsa_pub' > .ssh/id_rsa.pub && chmod 644 .ssh/id_rsa.pub
        echo '$id_rsa_pub' > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
        "
        su - $os_user -c "ssh -o StrictHostKeyChecking=no $os_user@$host 'hostname|| exit 1' " && echo '成功' || echo '失败'
    
    done
    

      

  • 相关阅读:
    Snuke's Subway Trip
    codevs 1606 台阶
    COGS 2334. [HZOI 2016]最小函数值
    codevs 1052 地鼠游戏
    洛谷 P1091 合唱队形
    洛谷 P1376 机器工厂
    codevs 2618 核电站问题
    vijos 1524 最小监视代价
    洛谷 P1690 贪婪的Copy
    51nod 1135 原根
  • 原文地址:https://www.cnblogs.com/slqt/p/10907554.html
Copyright © 2011-2022 走看看