• SSH服务


    SSH简介:
    SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能;ssh协议对通信双方的数据传输进行了加密处理,,其中包含用户登录时输入的用户口令。与telnet等应用相比,ssh协议提供了更好的安全性。Openssh:ssh协议的开源实现
    配置openssh服务器端:
    ssh服务是“C/S”架构的,C代表客户端,S代表服务端。在安装linux系统是openssh服务默认已经安装
    ssh服务及配置文件:
    Openssh-service:服务端软件
    Openssh-clients:客户端软件
    要保证这两个包都安装才行
    启动:service sshd start
    配置文件:/etc/ssh/sshd_config
    配置项:
    Port22:port代表监听的端口,默认为22,可自行修改
    在这里插入图片描述

    ListenA ddress0.0.0.0:监听的ip地址,默认为所有,可修改
    Protocol 2:代表的是ssh的第二个版本
    LoginGraceTime 2m:输入用户名后,2分钟不能输入密码自动关闭
    在这里插入图片描述

    PermintRootLogin yes:是否允许root登录,yes允许,no不允许
    在这里插入图片描述

    MaxAuthTries 6:最大的认证次数,就是输入密码次数
    在这里插入图片描述

    RSAAuthentication yes:启用RSA算法认证
    在这里插入图片描述

    PubkeyAuthentication yes:启用公钥认证
    在这里插入图片描述

    AuthorizedkeysFile:.ssh/authorized_keys 公钥存放位置,在对应用户的家目录下面.ssh隐藏目录中,名字为authorized_keys文件
    在这里插入图片描述

    PasswordAuthentication yes:密码认证
    在这里插入图片描述

    PermitEmptyPasseords no:是否允许空密码登录
    在这里插入图片描述

    限制可登录用户的配置:
    AllowUsers 用户名。。。:白名单
    DenyUsers 用户名:黑名单
    AllowGroups:组白名单
    DenyGroups:组黑名单
    登录验证方法:
    sshd服务支持两种验证方法:密码验证、秘钥对验证,可以只设置其中一种方式,也可以两种方式都启用
    密码验证:以服务器中本地系统用户的登录名称、密码进行验证,这种方式使用最为简便,但以客户机的角度来看,正在连接的服务器有可能被假冒,从服务器的角度来看,当遇到密码穷举(暴力破解)攻击时,防御能力比较弱。
    秘钥对验证:要求提供相匹配的秘钥信息才能通过验证
    ssh远程登录命令:ssh [用户名@]ip地址 [-p端口号]
    选项:
    -p:指明端口号
    在这里插入图片描述

    远程复制:scp
    用法:scp [选项] [用户名@]ip地址:/要复制到的目的地/
    或:scp [选项] /要复制东西的位置/ [用户名@]:ip地址 /要复制到哪
    选项:
    -C:压缩数据流
    -r:递归复制
    -p:保持原文件的修改时间、访问时间和访问权限
    -P 端口号:指明远程主机监听的端口
    在这里插入图片描述

    去对方主机拿东西:scp 用户名@ip地址:/对方存放的位置 /存放在哪里
    在这里插入图片描述

    远程复制:rsync 会检查内容并覆盖
    用法:rsync -av /复制那个目录 用户名@ip地址:/复制到哪里(复制目录和目录下文件)
    在这里插入图片描述

    或:rsync -av /复制那个目录/ 用户名@IP地址:/复制到哪里(只复制目录下的文件)
    在这里插入图片描述

    选项:
    -a:所有
    -n:模拟复制过程
    -v:显示详细过程
    -r:递归复制目录树
    -p:保留权限
    -t:保留时间戳
    -g:保留组信息
    -o:保留所有者信息
    允许实现对远程系统经验证加密安全访问,当用户远程连接ssh服务器时会复制ssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机~./ssh/know_hosts中。下次连接时,会比较两处是否有不同
    基于key认证:
    在服务器客户端中构建秘钥对验证ssh的基本过程
    第一步:创建秘钥对:
    公钥文件:id_rsa.pub
    私钥文件:id_rsa
    第二步:上传公钥文件id_rsa.pub到服务器中
    第三步:导入公钥信息
    公钥库文件:~/.ssh/authorized_keys(此文件的权限必须为600)
    第四步:使用秘钥对方式验证
    具体实现两种方式:
    第一种方式:(麻烦)
    使用zhangsan用户连接ssh服务器的lisi用户
    第一步:在客户端创建密钥对
    切换用户:su - zhangsan
    创建密钥对:ssh-keygen -t rsa [-b 2048]
    在这里插入图片描述

    第二步:上传密钥
    切换目录:cd /home/zhangsan/.ssh
    上传密钥:scp id_rsa.pub 用户名@ip地址:/上传到的目录
    在这里插入图片描述
    在这里插入图片描述

    第三步:在ssh服务器中设置
    切换用户:su - lisi
    用lisi用用户创建:mkdir .ssh
    切换目录:cd /tmp
    导入库文件:cat id_rsa.pub> /home/lisi/.ssh/authorized_keys
    修改权限:chmod 600 /home/lisi/.ssh/authorized_keys(.ssh目录权限700)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    第四步:在客户端登录验证
    以lisi用户登录看是否免密:ssh 用户名@ip地址
    在这里插入图片描述

    第二种:(简单)
    使用zhangsan用户连接ssh服务器的lisi用户
    第一步:在客户端创建密钥对
    切换用户:su - zhangsan
    创建密钥对:ssh-keygen -t rsa [-b 2048]
    在这里插入图片描述

    第二步:直接导入公钥到lisi用户家目录中
    导入公钥:ssh-copy-id -i id_rsa.pub 用户名@ip地址
    输入lisi用户密码:
    查看是否成功
    在这里插入图片描述

    第三步:在客户端验证
    验证:ssh 用户名@ip地址
    在这里插入图片描述

    SSH服务最佳实践:
    1、不要使用默认端口
    2、禁止使用protocol version 1
    3、限制可登录用户
    4、设定空闲会话超时时长
    5、利用防火墙设置ssh访问策略
    6、仅监听特定的ip地址
    7、基于口令认证时,使用强密码策略
    8、使用基于密钥认证
    9、禁止使用空密码
    10、禁止使用root用户直接登录
    11、限制ssh的访问频度和并发在线数
    12、做好日志,经常分析
    sudo的用途:
    Sudo能够授权指定用户在指定主机上运行某命令。如果未授权用户尝试使用sudo,会提示联系管理员。sudo可以提供日志,记录每个用户使用sudo操作。sudo为系统管理员提供配置文件,允许联系管理员集中管理用户的使用权限和使用的主机。sudo使用时间戳文件来完成类似“检票”的系统。默认存活期为5分钟的“入场券”
    编辑配置文件:visudo
    选项:
    -c:检查语法
    在这里插入图片描述

    配置文件:/etc/sudoers,/etc/sudoers.d/
    日志文件:/var/log/secure
    配置文件支持使用通配符glob:
    ?:匹配单个字符
    *:匹配任意长度字符
    [wxc]:匹配其中一个字符
    [^wxc]:匹配除括号内的字符
    \x:转义
    [[:alpha:]]:字母
    !:排除
    使用方法:sudo [参数] [授权命令]
    参数:
    -u 用户名:以指定的用户身份运行命令
    -l:查看当前用户可以执行的命令
    -v:更新用户的时间戳而不执行命令
    -V:显示sudo的版本信息
    在这里插入图片描述

    配置文件格式:
    使用visudo命令或执行vim /etc/sudoers 打开配置文件
    文件记录格式:
    用户 主机名列表=(代表用户)命令程序列表
    在这里插入图片描述

    ALL:代表所有
    NOPASSWD: 免密
    用户:运行命令者的身份
    主机列表:通过哪些主机
    代表用户:以哪个用户的身份
    命令程序列表:运行哪些命令
    注意:如果只授权用户登录本机执行命令,主机写本地ip即可
    别名设置:
    别名有四中类型:
    User_Alias:用户别名
    Runas_Alias:代表用户别名
    Host_Alias:主机别名
    Cmmd_Alias:命令别名
    用法: User_Alias 别名(大写)=用户名。。。
    在这里插入图片描述

    也可以将用户加入到组里面进行统一管理,组名前要加%
    用法:%组名 主机名=代表用户 命令程序
    在这里插入图片描述

  • 相关阅读:
    tensorboard玩耍手册
    Vulkan SDK 中的 demo 编译配置 win10 vs2019
    Linux 中如何修改终端提示符颜色?
    Flip技术
    想你所想,华为云桌面Workspace助你轻松办公
    C++经验(十)-- 保存成员函数的函数地址,避免switch-case的大量使用
    javaee 云借阅图书管理系统
    VoLTE端到端业务详解 | 应用实例一
    设计模式之策略模式
    SpringCloud Sentinel集成Gateway和实时监控
  • 原文地址:https://blog.csdn.net/qq_43677558/article/details/127571452