• 远程登录sshd服务



    一、sshd服务介绍

    Openssh功能
    1.sshd服务的功能:
    可以实现通过网络在远程主机开启安全shell操作
    Secure SHell ssh 客户端
    Secure SHell daemon(守护进程,管理ssh的进程,类似systemctld系统守护进程) sshd 服务端
    2.安装包
    openssh-server
    3.主配置文件
    /etc/ssh/sshd_conf
    在这里插入图片描述

    4.默认端口 22(可以理解,ip是家中大门,端口是房间门)
    (服务在ip上开启的对外开放的接口,连接这个接口就是使用这个程序的功能)
    5.客户端命令 ssh
    6.实验环境:两台虚拟机,a是服务器,b是客户端
    能通信,关闭图形,init 3
    在这里插入图片描述

    二、使用方法

    2.1基本用法

    ssh 是客户端使用的,连接的是服务器
    可以在ssh后面直接接命令

    ssh -l 远程主机用户(服务器) ip|hostname
    ssh -l root 172.25.254.100
    
    • 1
    • 2

    yes,第一次连接会有
    在这里插入图片描述
    fingerprint在你当前目录的.ssh/底下
    比如:cd /root/.ssh/
    这个文件和服务端100上面的文件是匹配的
    两个key一样
    在这里插入图片描述在这里插入图片描述
    第二次连接没有认证指纹
    在这里插入图片描述

    2.2模拟匹配(认证)不成功,远程登录失败

    删掉原先的key重启服务,然后重新生成key
    在这里插入图片描述
    现在的key和之前不一样了
    在这里插入图片描述
    认证改变了,认证不匹配,不通过
    在这里插入图片描述
    解决方法(提示了红框标出,这行文件有问题):
    删掉该第一行
    在这里插入图片描述总结:
    当连接因为认证问题被拒绝时解决方案
    在提醒的文件中删除对应的行即可

    三、常用参数

    3.1常用参数

    -l 指定登录用户
    -i 指定私钥
    -X 开启图形
    -f 后台运行
    -o 指定连接参数
    -t指定连接条板
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.2常用参数用法

    -X参数

    -X开启图形
    真机连接a主机

    ssh -l root 172.25.254.100
    gedit 开启图形,开启不了
    
    • 1
    • 2

    因为,ssh连接默认是文本连接,不能开启图形
    在这里插入图片描述``

    ssh -X -l root 172.25.254.100
    gedit
    
    • 1
    • 2

    有了开启图形软件的权利
    在这里插入图片描述

    -f参数

    可以在ssh后面直接接命令
    在这里插入图片描述
    等待打开时间时候会占用你的终端
    打入后台后,你可以在终端运行新的指令
    在这里插入图片描述

    -o参数

    指定连接参数,这个参数可以在man中查看
    最常用的参数StrictHostKeyChecking=no

    ssh -o "StrictHostKeyChecking=no" -l root 172.25.254.100
    自动会输入成yes
    
    • 1
    • 2

    在这里插入图片描述

    -t参数

    连接A服务器的时候,我的权利不行,另一台服务器250我能连接并且另一台服务器能连接A服务器,可以先连接250在由250跳到A
    先连接到250服务器再由250服务器跳到100
    在这里插入图片描述
    这个时候A服务器看见的是250服务器连接它的
    在这里插入图片描述

    四、key认证

    4.1概念

    B是客户端,A是服务器

    ssh -l root 172.25.254.100这样连接必须知道root用户在远程服务器的密码
    
    • 1

    在这里插入图片描述

    这种认证方式叫用户认证
    认证方法是对称加密,加密和解密用的是同一串字符,如:指纹
    非对称加密,加密和解密用的不同,钥匙与锁

    对称加密,容易被破解,可以被暴力破解(用一个计算速度很快的电脑一个一个试),所以密码要有强度校验,并且容易遗忘
    非对称加密,加密用公钥,解密用私钥,不会被盗用,攻击者无法通过无秘钥方式登录服务器

    4.2生成公钥和秘钥

    公钥和私钥没有必要必须在服务器端生成,客户端和服务器端都能生成公钥和私钥(比如买锁那都能买)
    比如在客户端生成公钥和私钥

    ssh-keygen 生成公钥和私钥的命令
    
    • 1

    问你key(秘钥加密字符串的文件)保存在哪里,如果更改保存路径还需要更改ssh主配置文件,更改麻烦,所以用默认就行
    在这里插入图片描述
    设定一个密码,就是需要秘钥还需要输入密码,(秘钥的密码)麻烦,直接回车
    在这里插入图片描述公钥和私钥生成了
    在这里插入图片描述cat /root/.ssh/id_rsa
    这个是私钥(解锁)
    在这里插入图片描述公钥(上锁)
    cat /root/.ssh/id_rsa.pub
    在这里插入图片描述
    服务器发来的frigerprint指纹认证密码,证明这台主机B连接服务器A的时候是原先的主机B

    在这里插入图片描述该生成公钥和秘钥都是交互式,不利于自动操作
    如果用脚本生成公钥和秘钥,脚本不能自动运行
    自动操作不是交互式

    ssh-keygen --help
    
    • 1

    在这里插入图片描述
    非交互式生成公钥和秘钥-f指定保存加密的文件-P表示指定的密码

    ssh-keygen -f /root/.ssh/id_rsa -P ""
    
    • 1

    在这里插入图片描述

    4.3公钥和私钥的使用(上锁)

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100
    
    • 1

    要被锁的服务器的密码,征求被锁服务器的同意,要不然就是非法的
    类似你用锁乱锁别人家门肯定不行
    在这里插入图片描述
    这个时候服务器A会多个文件,这个文件其实就是公钥
    在这里插入图片描述
    和B的公钥是一样的

    在这里插入图片描述客户端B有私钥,只有一个秘钥
    在这里插入图片描述
    直接连接,无需密码(直接默认使用唯一的私钥去开公钥)

    在这里插入图片描述如果有很多私钥,-i指定具体私钥去开公钥就行了
    在这里插入图片描述

    4.4总结

    ssh-keygen -f /root/.ssh/id_rsa -P "" 生成Key
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100 用key给服务器加密
    加密完服务器有两种认证方式,有私钥的无需输入密码连接,无私钥输入密码连接
    
    • 1
    • 2
    • 3

    五、sshd服务的安全优化

    5.1安全问题描述

    5.1.1原始密码与key认证

    7号主机可以连接我们的服务器A,有输密码的权利,但是这个功能本身不安全,本应该不能开启,所以要关闭这个功能
    所以需要在服务器A上关闭不安全的功能
    在这里插入图片描述

    5.1.2修改端口

    不修改端口,大家都知道端口是22默认端口

    5.1.3限制谁可连接谁不可连接

    设定只能连接谁或者不能连接谁

    5.2 关闭原始的密码认证

    编辑服务器A的主配置文件
    在这里插入图片描述
    改成no服务器A的密码认证功能关闭了,只有公钥和私钥(key)认证可以连接
    关闭密码认证前,先要把key认证服务启动好,因为Key认证一开始需要密码认证来承认允许Key认证(允许上锁)

    在这里插入图片描述
    重启服务systemctl restart sshd
    现在没有输入密码的权利了,现在连暴力破解都不行了,因为没有输入密码的途径了
    在这里插入图片描述

    5.3修改端口

    由于服务器开启的selinux会限制你的端口的更改,需要更改selinux为警告模式
    关闭火墙
    在这里插入图片描述
    systemctl disable --now firewalld
    因为火墙只允许22端口,如果开启火墙2021就测试不成功了

    修改主配置文件

    在这里插入图片描述
    重启服务systemctl restart sshd
    端口变成2021了

    在这里插入图片描述在这里插入图片描述

    5.4设定可连接的对象(用户的黑白名单)

    白名单在名单才可被ssh连接
    在主配置文件中,找个空位写AllowUsers westos只能连接westos用户
    重启服务systemctl restart sshd
    在这里插入图片描述多个用户

    AllowUsers westos root
    
    • 1

    重启服务systemctl restart sshd
    连接成功
    在这里插入图片描述
    黑名单在名单不能被ssh连接

    DenyUsers westos 
    westos不能通过ssh连接
    
    • 1
    • 2

    重启服务systemctl restart sshd
    在这里插入图片描述

    5.5总结

    在这里插入图片描述

  • 相关阅读:
    背后的力量 | 提升医疗服务“速度“和“温度” 华云数据助力上海国际医学中心加速智慧医院建设
    C++11多线程std::thread入门使用以及对比分析pthread
    程序分析-klee查找bug过程
    基于Echarts实现可视化数据大屏车联网平台数据可视化
    javascript算法题
    C#面:简单介绍 序列化 和 反序列化
    19、pixelNeRF
    深度学习Course5第三周Sequence Models & Attention Mechanism习题整理
    第23篇 基于Qt实现PID温度加热控制系统
    如何让用户对产品上瘾_让用户养成习惯的产品逻辑
  • 原文地址:https://blog.csdn.net/westos_yanzheng/article/details/125430753