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

ssh 是客户端使用的,连接的是服务器
可以在ssh后面直接接命令
ssh -l 远程主机用户(服务器) ip|hostname
ssh -l root 172.25.254.100
yes,第一次连接会有

fingerprint在你当前目录的.ssh/底下
比如:cd /root/.ssh/
这个文件和服务端100上面的文件是匹配的
两个key一样


第二次连接没有认证指纹

删掉原先的key重启服务,然后重新生成key

现在的key和之前不一样了

认证改变了,认证不匹配,不通过

解决方法(提示了红框标出,这行文件有问题):
删掉该第一行
总结:
当连接因为认证问题被拒绝时解决方案
在提醒的文件中删除对应的行即可
-l 指定登录用户
-i 指定私钥
-X 开启图形
-f 后台运行
-o 指定连接参数
-t指定连接条板
-X开启图形
真机连接a主机
ssh -l root 172.25.254.100
gedit 开启图形,开启不了
因为,ssh连接默认是文本连接,不能开启图形
``
ssh -X -l root 172.25.254.100
gedit
有了开启图形软件的权利

可以在ssh后面直接接命令

等待打开时间时候会占用你的终端
打入后台后,你可以在终端运行新的指令

指定连接参数,这个参数可以在man中查看
最常用的参数StrictHostKeyChecking=no
ssh -o "StrictHostKeyChecking=no" -l root 172.25.254.100
自动会输入成yes

连接A服务器的时候,我的权利不行,另一台服务器250我能连接并且另一台服务器能连接A服务器,可以先连接250在由250跳到A
先连接到250服务器再由250服务器跳到100

这个时候A服务器看见的是250服务器连接它的

B是客户端,A是服务器
ssh -l root 172.25.254.100这样连接必须知道root用户在远程服务器的密码

这种认证方式叫用户认证
认证方法是对称加密,加密和解密用的是同一串字符,如:指纹
非对称加密,加密和解密用的不同,钥匙与锁
对称加密,容易被破解,可以被暴力破解(用一个计算速度很快的电脑一个一个试),所以密码要有强度校验,并且容易遗忘
非对称加密,加密用公钥,解密用私钥,不会被盗用,攻击者无法通过无秘钥方式登录服务器
公钥和私钥没有必要必须在服务器端生成,客户端和服务器端都能生成公钥和私钥(比如买锁那都能买)
比如在客户端生成公钥和私钥
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 ""

ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100
要被锁的服务器的密码,征求被锁服务器的同意,要不然就是非法的
类似你用锁乱锁别人家门肯定不行

这个时候服务器A会多个文件,这个文件其实就是公钥

和B的公钥是一样的
客户端B有私钥,只有一个秘钥

直接连接,无需密码(直接默认使用唯一的私钥去开公钥)
如果有很多私钥,-i指定具体私钥去开公钥就行了

ssh-keygen -f /root/.ssh/id_rsa -P "" 生成Key
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100 用key给服务器加密
加密完服务器有两种认证方式,有私钥的无需输入密码连接,无私钥输入密码连接
7号主机可以连接我们的服务器A,有输密码的权利,但是这个功能本身不安全,本应该不能开启,所以要关闭这个功能
所以需要在服务器A上关闭不安全的功能

不修改端口,大家都知道端口是22默认端口
设定只能连接谁或者不能连接谁
编辑服务器A的主配置文件

改成no服务器A的密码认证功能关闭了,只有公钥和私钥(key)认证可以连接
关闭密码认证前,先要把key认证服务启动好,因为Key认证一开始需要密码认证来承认允许Key认证(允许上锁)

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

由于服务器开启的selinux会限制你的端口的更改,需要更改selinux为警告模式
关闭火墙

systemctl disable --now firewalld
因为火墙只允许22端口,如果开启火墙2021就测试不成功了
修改主配置文件

重启服务systemctl restart sshd
端口变成2021了


白名单在名单才可被ssh连接
在主配置文件中,找个空位写AllowUsers westos只能连接westos用户
重启服务systemctl restart sshd
多个用户
AllowUsers westos root
重启服务systemctl restart sshd
连接成功

黑名单在名单不能被ssh连接
DenyUsers westos
westos不能通过ssh连接
重启服务systemctl restart sshd

