• 服务器之间免密登录


    服务器之间免密登录

    一、简便方法

    1、所有服务器执行

    mkdir -p  /root/.ssh
    cd /root/.ssh
    ssh-keygen -t rsa 
    
    • 1
    • 2
    • 3
    chmod 700 /root/.ssh
    
    • 1

    2、将本机的公钥拷贝到其他机器上

    输入yes

    输入对方服务器密码

    192.168.56.100

    ssh-copy-id root@192.168.56.101
    
    • 1

    192.168.56.101

    ssh-copy-id root@192.168.56.100
    
    • 1

    二、让服务器A实现免密登录自己

    1、在A服务器中指定的位置(/root/.ssh)生成私钥id_rsa和公钥id_rsa.pub;
    在服务器A操作

    mkdir -p  /root/.ssh
    cd /root/.ssh
    ssh-keygen -t rsa
    
    
    cat id_rsa.pub >> authorized_keys
    
    
    
    scp id_rsa.pub root@192.168.56.101:/tmp
    
    
    ssh root@192.168.56.101
    
    
    mkdir -p /root/.ssh
    cd /root/.ssh
    cat /tmp/id_rsa.pub >> authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2、在B服务器中指定的位置(/root/.ssh)生成私钥id_rsa和公钥id_rsa.pub;
    在服务器B操作

    mkdir -p  /root/.ssh
    cd /root/.ssh
    ssh-keygen -t rsa
    
    
    cat id_rsa.pub >> authorized_keys
    
    
    
    scp id_rsa.pub root@192.168.56.100:/tmp
    
    
    ssh root@192.168.56.100
    
    
    mkdir -p /root/.ssh
    cd /root/.ssh
    cat /tmp/id_rsa.pub >> authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    三、最终脚本

    配置下面的ip 密码
    执行下面的脚本

    配置需要

    在192.168.56.100 执行下面的脚本后,所有配置的都可以互免密了

    #设置要登入的节点ip地址

    NOW_IP=“192.168.56.100”
    所有服务器的ip
    HOST_IP_NODE=(“192.168.56.100” “192.168.56.101” “192.168.56.102”)
    所有服务器对应的密码
    HOST_PASS_NODE=(“123456” “123456” “123456”)

    #!/bin/sh
    
    CURRENT_DIR=$(
       cd "$(dirname "$0")"
       pwd
    )
    
    #///
    # 使用方法
    # 配置下面的NOW_IP HOST_IP_NODE  HOST_PASS_NODE
    # 执行该脚本,然后登录测试一下即可
    #---------------设置ssh免密登入对台设备---------------#
    # 设置要登入的节点ip地址
    # 当前执行脚本服务器的ip
    NOW_IP="192.168.56.100"
    # 所有服务器的ip
    HOST_IP_NODE=("192.168.56.100" "192.168.56.101" "192.168.56.102")
    # 所有服务器对应的密码
    HOST_PASS_NODE=("123456" "123456" "123456")
    
    sed -i -e "s/StrictHostKeyChecking/#StrictHostKeyChecking/g" /etc/ssh/ssh_config
    
    #本机ip
    native_ip=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}'|awk 'NR==1')
    echo "【本机ip】$native_ip"
    
    #安装expect软件包
    # yum install expect -y
    
    # 下载离线rpm yumdownloader --resolve expect
    rpm -Uvh --force --nodeps *.rpm
    expect << EOF
    set timeout 5
    spawn ssh-keygen -t rsa
    expect "id_rsa):" 
    send "\r" 
    expect "passphrase):" 
    send "\r"
    expect "again:"
    send "\r" 
    expect eof
    EOF
     
    copy_id(){
    expect << EOF
    set timeout 5
    spawn ssh-copy-id $1
    expect "(yes/no)?" 
    send "yes\r"
    expect "password:" 
    send "$2\r" 
    expect eof
    EOF
    }
    
     
    #循环遍历
    num=${#HOST_IP_NODE[*]}
    fun(){
    	for((i=0;i<$num;i++));
          do
    		if [ ${HOST_IP_NODE[i]} == $native_ip ]
    	    then
    			echo "本机不做操作"
    	    else
    	        copy_id root@${HOST_IP_NODE[i]} ${HOST_PASS_NODE[i]}
    			if [ $NOW_IP == $native_ip ]
    			then
    				echo "$native_ip 远程操作 "
    				echo "ssh ${HOST_IP_NODE[i]} \"rm -rf /root/sshNoPwd\""
    				ssh ${HOST_IP_NODE[i]} "rm -rf /root/sshNoPwd"
    				scp -r $CURRENT_DIR root@${HOST_IP_NODE[i]}:/root
    ssh ${HOST_IP_NODE[i]} 'bash -s' <<'ENDSSH'
    chmod +x /root/sshNoPwd/sshNoPwd.sh
    cd /root/sshNoPwd
    ./sshNoPwd.sh
    ENDSSH
    			fi
    	    fi
          done
    	
    }
    fun
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
  • 相关阅读:
    向量数据库:Milvus
    华为防火墙的四种智能选路方式
    抖音账号矩阵系统源码开发之——视频发布功能开发
    后端返回parentId,前端处理成children嵌套数据
    VueHub:我用 ChatGPT 开发的第一个项目,送给所有 Vue 爱好者
    【Linux篇】第九篇——Linux下的进程控制
    modesim verilog仿真验证基本流程(新建工程方式)
    LabVIEW操作系列
    DTDX991A 61430001-UW 自由IOT引入人工智能功能
    线上服务发布抖动,该怎么解决呢
  • 原文地址:https://blog.csdn.net/qq_36120342/article/details/127648709