| 
 一、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
 yes,第一次连接会有
  fingerprint在你当前目录的.ssh/底下
 比如:
 cd /root/.ssh/这个文件和服务端100上面的文件是匹配的
 两个key一样
 
   第二次连接没有认证指纹
 
  2.2模拟匹配(认证)不成功,远程登录失败删掉原先的key重启服务,然后重新生成key
  现在的key和之前不一样了
 
  认证改变了,认证不匹配,不通过
 
  解决方法(提示了红框标出,这行文件有问题):
 删掉该第一行
 
  总结: 当连接因为认证问题被拒绝时解决方案
 在提醒的文件中删除对应的行即可
 三、常用参数3.1常用参数-l 指定登录用户
-i 指定私钥
-X 开启图形
-f 后台运行
-o 指定连接参数
-t指定连接条板
 3.2常用参数用法-X参数-X开启图形真机连接a主机
 ssh -l root 172.25.254.100
gedit 开启图形,开启不了
 因为,ssh连接默认是文本连接,不能开启图形
  `` ssh -X -l root 172.25.254.100
gedit
 有了开启图形软件的权利
  -f参数可以在ssh后面直接接命令
  等待打开时间时候会占用你的终端
 打入后台后,你可以在终端运行新的指令
 
  -o参数指定连接参数,这个参数可以在man中查看最常用的参数
 StrictHostKeyChecking=no ssh -o "StrictHostKeyChecking=no" -l root 172.25.254.100
自动会输入成yes
 
 -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用户在远程服务器的密码
 
 这种认证方式叫用户认证认证方法是对称加密,加密和解密用的是同一串字符,如:指纹
 非对称加密,加密和解密用的不同,钥匙与锁
 对称加密,容易被破解,可以被暴力破解(用一个计算速度很快的电脑一个一个试),所以密码要有强度校验,并且容易遗忘非对称加密,加密用公钥,解密用私钥,不会被盗用,攻击者无法通过无秘钥方式登录服务器
 4.2生成公钥和秘钥公钥和私钥没有必要必须在服务器端生成,客户端和服务器端都能生成公钥和私钥(比如买锁那都能买)比如在客户端生成公钥和私钥
 ssh-keygen 生成公钥和私钥的命令
 问你key(秘钥加密字符串的文件)保存在哪里,如果更改保存路径还需要更改ssh主配置文件,更改麻烦,所以用默认就行
  设定一个密码,就是需要秘钥还需要输入密码,(秘钥的密码)麻烦,直接回车
 
  公钥和私钥生成了 
  cat /root/.ssh/id_rsa这个是私钥(解锁)
 
  公钥(上锁) 
 cat /root/.ssh/id_rsa.pub
  服务器发来的frigerprint指纹认证密码,证明这台主机B连接服务器A的时候是原先的主机B
  该生成公钥和秘钥都是交互式,不利于自动操作 如果用脚本生成公钥和秘钥,脚本不能自动运行
 自动操作不是交互式
 ssh-keygen --help
  非交互式生成公钥和秘钥-f指定保存加密的文件-P表示指定的密码
 ssh-keygen -f /root/.ssh/id_rsa -P ""
 
 4.3公钥和私钥的使用(上锁)ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100
 要被锁的服务器的密码,征求被锁服务器的同意,要不然就是非法的类似你用锁乱锁别人家门肯定不行
 
  这个时候服务器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给服务器加密
加密完服务器有两种认证方式,有私钥的无需输入密码连接,无私钥输入密码连接
 五、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
 重启服务systemctl restart sshd连接成功
 
  黑名单在名单不能被ssh连接
 DenyUsers westos 
westos不能通过ssh连接
 重启服务systemctl restart sshd
  5.5总结
 |