美文网首页工作生活
week11-远程连接服务SSH

week11-远程连接服务SSH

作者: 刘Huai | 来源:发表于2019-07-03 09:22 被阅读0次

    SSH (Secure Shell Protocol),在传输数据之前,SSH 先对联机数据包通过加密技术进行加密处理,加密后进行加密传输,确保了传递的数据安全

    1. SSH与Telnet的区别
    服务连接方式 服务数据传输 服务监听端口 服务登陆用户
    SSH 加密 22/tcp 默认支持root用户登陆
    Telnet 明文 23/tcp 不支持root用户登陆

    第一步 客户端向服务端发送请求连接 ( 远程谁,谁就是服务端,谁远程谁就是客户端)
    第二步 服务端向客户端发给送公钥 公钥存放在 服务端 etc/ssh/ .pub 文件就是公钥文件
    第三步 客户端输入yes进行确认
    第四步 服务端询问客户端密码信息,
    第五步 客户端输入密码
    第六步 服务端确认密码正确,连接建立 服务端通过etc/shadow 文件中对比加密密码,确认没有问题,建立连接

    基于密码(口令)方式 安全性不高
    基于密钥方式 为批量管理服务器(ansible),准备环境 免交互远程连接

    1. 管理端 发送连接请求
    2. 被管理端 基于口令进行验证
    3. 管理端 创建密钥对,并发送公钥信息
    4. 管理端 发送连接请求
    5. 被管理端 发送公钥质询信息
    6. 管理端 响应公钥质询信息
    7. 被管理端 接收响应信息,远程连接建立
    2. 基于密钥连接(免交互,在管理端服务器操作)

    第一个历程: 创建密钥对(在远程管理端创建 m01)

    ssh-keygen 创建密钥命令
    ssh-keygen -t dsa (加密方式的一种,有dsa rsa 等)

    第二个历程: 将密钥(公钥信息进行分发给要管理的主机)
    shh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.8 (-i 指定公钥文件的存放路径)
    以什么用户身份传输
    发送成功之后,就不要要使用口令进行登录

    实际实例

    远程一下测试是否建立过密钥连接

    连接状态

    此时还没有建立通过密钥连接的方式
    创建密钥

    ssh-keygen -t dsa
    -t 指定加密方式  有dsa  rsa等等
    
    创建密钥对并查看

    将密钥分发给要管理的主机

    ssh-copy-id -i /root/.ssh/id_dsa root@172.16.1.7
    
    分发密钥

    测试,不使用密码就可以连接

    测试成功

    总结通过密钥连接

    1. 管理端: 创建密钥对,保存好私钥
    2. 管理端: 将公钥进行发送
    3. 被管理端:接收到公钥 保存 ~/.ssh/authorized_keys (600)
      /etc/ssh/sshd_confing
    3.如何批量分发秘钥

    为了避免大量重复的工作

    分发密钥思路 (免交互)
       1. 第一次ssh 连接会有提示yes/ no 的提示
             利用 ssh参数解决 (StrictHostKeyChecking) 'man 一下ssh 在下方可以找到'
             StrictHostKeyChecking 检查功能,分发key的时候,输入 StrictHostKeyChecking=no
       2. 每次连接分发公钥前,都需要输入密码信息
             跳过密码使用 (sshpass)
             yum install -y sshpass 
    
    ssh第一次交互取消成功
    yum install -y sshpass
    
    已安装sshpass 使用sshpass

    编写脚本

    使用for循环
    #!/bin/bash
    for  ip in {7,8,9}  # 命名一个变量  $ip 变量的值在in 后边指定
    do 
    echo "sent key to 172.16.1.$ip"
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null 
    # &>/dev/null  将一些没用的信息定向到空
    then 
    
            if [ $? -eq 0 ]       # 如果返回结果等于0 就执行 then 下边命令否则执行 else下边的命令
                then
                    echo "分发密钥成功"
                else
                    echo "分发密钥失败"
            fi
    done 
    等于     -eq
    大于     -gt
    小于     -lt
    大于等于 -ge
    小于等于 -le
    不等于   -ne
    
    4. ssh 配置文件

    配置文件常用参数(SSH服务端配置文件:/etc/ssh/sshd_config)

    Port 22 SSH服务默认端口号
    ListenAddress 0.0.0.0 SSH服务默认监听所有地址

    监听地址必须是主机网卡地址

    PermitRootLogin yes SSH服务默认允许使用root用户连接

    在实际环境中,一般禁止root用户远程连接

    PermitEmptyPasswords no SSH服务默认不允许空密码登入

    在实际环境中一定禁止用户使用空密码登录

    UseDNS no 禁用SSH服务的DNS反向解析
    GSSAPIAuthentication no 关闭SSH服务的GSSAPI认证方式

    相关文章

      网友评论

        本文标题:week11-远程连接服务SSH

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