美文网首页
SSH-远程连接

SSH-远程连接

作者: linux_龍 | 来源:发表于2019-07-30 21:33 被阅读0次

    1.远程服务概念说明

    ssh: 远程安全连接 22 互联网服务器 可以默认root用户远程登录
    telnet:远程连接 23 网络设备连接 机房局域网中 不可以使用root远程登录

    2.远程连接服务原理

    (1).客户端 -- 服务端 请求建立远程连接
    (2).服务端 -- 客户端 确认连接信息
    (3).客户端 -- 服务端 确认连接
    (4).服务端 -- 客户端 发送公钥信息 确认密码信息
    (5)客户端 -- 服务端 接受公钥并保存(~/.ssh/known_hosts)并且输入密码信息
    (6).服务端 -- 客户端 确认密码输入正确
    后续数据传输过程:客户端公钥加密 -- 服务端私钥解密
    私钥和公钥:对传输的数据进行加密处理

    2.远程服务连接方式

    基于密码连接方式:密码复杂度
    基于秘钥远程连接方式:
    第一步:管理端 分发公钥信息
    创建秘钥

    [root@m01 ~]#  ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/root/.ssh/id_dsa): 
    /root/.ssh/id_dsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_dsa.
    Your public key has been saved in /root/.ssh/id_dsa.pub.
    The key fingerprint is:
    SHA256:0aUC8VWiUdeezRtfl1runHRYU+dNPTxefKbkDFfvCNw root@m01
    The key's randomart image is:
    +---[DSA 1024]----+
    |      o...+.+..oo|
    |       o = *..++@|
    |        = o oBEO@|
    |         o   .*OO|
    |        S     =oO|
    |             ..+o|
    |              + o|
    |               + |
    |                 |
    +----[SHA256]-----+
    

    第二步:管理端 分发公钥信息

    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_dsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@172.16.1.7's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@172.16.1.7'"
    and check to make sure that only the key(s) you wanted were added.
    
    

    管理主机: 10.0.0.61/172.16.1.61
    被管理主机: 172.16.1.31 172.16.1.41 172.16.1.7
    ** 如何批量分发秘钥:**
    ssh-copy-id 命令原理
    01.ssh和远程主机连接
    02.将公钥文件传送到远程主机,/root/.ssh
    将公钥内容保存到 /root/.ssh/authorized_keys(600)

    3.连接建立时,ssh服务会加载到authorized_keys

    ,实现基于秘钥连接通讯
    利用脚本如何批量分发:
    01.需要输入确认信息

    ssh -o StrictHostKeyChecking=no 172.16.1.31
    

    02.需要输入密码信息

    yum install -y sshpass
     [root@m01 scripts]# sshpass -p654321 ssh 172.16.1.31
    

    批量分发秘钥脚本:
    vim /server/scripts/fenfa_pub.sh

    #!/bin/bach
    ./etc/init.d/fouctions
    for ip in {7,31,41}
    do
    echo "================172.16.1.$ip start fenfa key============"
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no 172.16.1.$ip &>/dev/null
    if [ $? -eq 0 ]
    then
    echo "公钥分发成功" /bin/true
    echo ""
    else
    echo "公钥分发失败" /bin/false
    echo ""
    fi
    done
    

    分发结果:

    [root@nfs01 /server/scripts]# sh fenfa_key.sh
    fenfa_key.sh: line 2: ./etc/init.d/fouctions: No such file or directory
    ================172.16.1.7 start fenfa key============
    公钥分发成功 /bin/true
    
    ================172.16.1.31 start fenfa key============
    公钥分发成功 /bin/true
    
    ================172.16.1.41 start fenfa key============
    公钥分发成功 /bin/true
    

    检查秘钥分发脚本:

    
    #!/bin/bash
    
    if [ $# -ne 1 ]
    then
    echo "usage: 请在执行脚本后面输入一个合法命令,命令之间有空格,请用双引号括起来"
    exit 2
    fi
    
    cmd="$1"
    
    for ip in {7,31,41}
    do
    echo "=================check 172.16.1.$ip================="
    ssh 172.16.1.$ip $cmd
    echo ""
    done
    
    =================check 172.16.1.7=================
    web01
    
    =================check 172.16.1.31=================
    nfs01
    
    =================check 172.16.1.41=================
    backup
    
    

    批量分发脚本问题:
    01.执行脚本出现错误
    02.将脚本中的命令单独在命令行中执行
    sshpass没有安装成功
    手动指定命令分发
    ssh-copy-id -i /root/.ssh/id_dsa.pub
    输入yes 输入密码
    检查:/var/log/secure文件

    如果一台主机远程服务端口号改动了,如何再分发公钥?
    多台主机 ssh连接信息不一致
    172.16.1.31  22     密码  654321
    172.16.1.41  22     密码  123456 
    172.16.1.7   52113  密码  654321
    shell: 数组概念
    第一个历程: 编辑一个主机连接文件
    cat >> /server/scripts/host_info.txt <<EOF
    172.16.1.31  22      654321
    172.16.1.41  22      123456 
    172.16.1.7   52113   654321 
    EOF  
    
    第二个历程: 调取文件中信息
    cat /server/scripts/host_info.txt|\
    while read line
    do 
    IP_info="$(echo $line|awk '{print $1}')"
    Port_info="$(echo $line|awk '{print $2}')" Pass_info="$(echo $line|awk '{print $3}')"
    echo $IP_info $Port_info $Pass_info 
    done      
       
    第三个历程: 编写脚本:
    [root@m01 scripts]# vim fenfa_key.sh 
    #!/bin/bash
    . /etc/init.d/functions
       
    cat /server/scripts/host_info.txt|\
    while read line
    do
    IP_info="$(echo $line|awk '{print $1}')"
    Port_info="$(echo $line|awk '{print $2}')"
    Pass_info="$(echo $line|awk '{print $3}')"
    echo "====================$IP_info start fenfa key===================="
    sshpass -p$Pass_info ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no $IP_info -p $Port_info &>/dev/null
          if [ $? -eq 0 ]
          then
            echo  "公钥分发成功"  /bin/true
            echo  ""
          else
            echo  "公钥分发失败"  /bin/false
            echo  ""
          fi
       done
    

    远程服务配置文件:
    17 #Port 52113
    19 #ListenAddress 0.0.0.0
    PS: 监听的地址只能是本地主机网卡上有的地址 web服务 负载均衡 ******
    20 #PermitEmptyPasswords no --- 不允许空密码连接主机
    21 #PermitRootLogin yes --- 禁止root用户远程连接 no
    22 GSSAPIAuthentication no --- 关闭GSSAPI认证 加快SSH连接效率
    23 UseDNS no --- 关闭DNS反向解析 加快SSH连接效率
    PS: 在SSH服务配置文件, 很多注释的信息不是没有作用, 表示的是默认配置
    SSH远程连接服务进程

    root       7223      1  0 12:54 ?        00:00:00 /usr/sbin/sshd -D    远程连接服务进程(实现客户端远程连接)
    root       7683   7223  0 15:18 ?        00:00:00 sshd: root@pts/0  远程连接会话进程(维持连接会话)
    

    相关文章

      网友评论

          本文标题:SSH-远程连接

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