目录
一.Openssh的功能
1.sshd服务的用途
作用:可以实现通过网络在远程主机中开启shell的操作
Secure SHell ==> ##客户端
Secure SHell daemon ==> ##服务端2.安装包
openssh-server3.主配置文件
/etc/ssh/sshd_conf4.默认端口
225.客户端命令
ssh
二.ssh远程登陆服务 :
1. 步骤 : 首先准备两台全新的虚拟机,并且将其ip设定成 172.25.254.123 和 172.25.254.223
然后在真机中分别链接两台虚拟机
第一次链接会提示错误或者让输入虚拟机密码 ,我这里的错误显示未文件中的第四行有错误,我们只需要编辑文件将第四行内容删掉即可:
2. ssh常用参数
-l ##指定登陆用户
-i ##指定私钥
-X ##开启图形
-f ##后台运行
-o ##指定连接参数 #ssh -l root 172.25.254.xxx -o "StrictHostKeyChecking=no" 首次连接不需要输入yes
-t ##指定连接跳板 #ssh -l root 172.25.254.123 -t ssh -l root 172.25.254.223 连接123跳板连接223
三.sshd key :
1. 对称加密 :加密和解密是同一字符串
容易泄漏
可暴力破解
容易遗忘
非对称加密:加密用公钥,解密用私钥
不会被盗用
攻击者无法通过无密钥方式登陆服务器#方法1 :
$ ssh-keygen (生成钥匙)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##输入保存密钥文件
Enter passphrase (empty for no passphrase): ##密钥密码
Enter same passphrase again: ##确认密码
Your identification ... ##私钥
Your public ... ##公钥
The key ...
#方法2 : ssh-keygen -f /root/.ssh/id_rsa -P "" ##给定文件保存位置和密码,自动化设定公钥密钥(公钥和密钥的设定可以在任意主机下) 创建锁
ssh-copy-id -i /root/.ssh/id-rsa.pub root@172.25.254.123 ##将公钥发送到123主机,实现上所 ##将锁给另一台主机,并且将其所上,这样我们就还有私钥
ssh -l /root/.ssh/id_rsa -l root 172.25.254.123 ##用私钥将公钥打开,这样以后就不需要密码了【步骤:】 首先我们准备两台虚拟机,并且将虚拟机a当作服务器(ip为172.25.254.123),将虚拟机b(ip为172.25.254.223)当作 客户端
我们可以在虚拟机b上输入ssh -l root 172.25.254.123来通过root用户连接到虚拟机a中,但是我们要认证root用户在虚拟机a上的密码才可以远程登陆,这种认证方式时服务器提供给我们最原始的认证方式,这种认证方式为对称加密。
公钥和私钥的制作无论是在服务器还是客户端中都是可以制造的,这里我们举例在虚拟机b(客户端)创建钥匙,然后第二行会显示我们需要将钥匙存入哪个文件,虽然保存的位置我们可以自定义,但是建议大家直接回车选用默认的存储方式,因为自定义存储方式会更改系统默认的ssh权限,用起来比较麻烦,第三行显示的内容需要我们再次输入密码,这就好比保险柜需要指纹认证也需要钥匙开启,我们这里直接回车不需要设定密码,相当于免密认证,只要有密钥我们就可以登陆
然后我们就成功生成了公钥(/root/.ssh/id_rsa.pub) 和私钥(/root/.ssh/id_rsa),公钥用来上锁,私钥用来解锁
然后查看公钥和私钥的文件是否生成,就相当于我们在商店已经买好了锁了,接下来就需要给我们的门上上锁了
再者我们可以使用方法二来生成私钥和公钥,我们可以直接输入 ssh-keygen -f /root/.ssh/id_rsa -P "" 这样我们就可以直接指定钥匙存放的目录以及免密认证
然后我们就可以对我们的虚拟机a进行上所,等同于我们买好了锁给家里的门上锁
这里我们在虚拟机b中输入命令,对虚拟机a中的root用户进行上锁,如果需要锁别的用户可以换将root换成别的用户,然后我们就可以在虚拟机a中看到我们的ssh目录中多出来一个authorized_keys文件,这就是我们上的锁
然后我们可以实验我们是否完成了实验,通过虚拟机b链接虚拟机a我们就可以直接链接不需要输入密码了
四.sshd 安全优化参数详解:
首先我们需要检查实验环境:
输入命令 :getenforce ##查看当前SElinux的模式应用 (强制 执行 停用) 如果显示Enforcing ##表示服务开启,我们应当关闭它 继续输入setenforce 0 ##表示停止其服务 然后我们关闭防火墙 systemctl disable --now firewalld 在重启服务 systemctl restart sshd这样我们的实验环境就配置完成了
实验步骤: 首先我们 rpm -qc openssh-server ##查找优化所需要的文件
然后编辑其中的文件 vim /etc/ssh/sshd_config
第一种安全优化的方法,我们可以在文章中的74行中将通过密码的方式连接电脑的命令将其关闭,将yes改为no,这样我们就无法通过输入密码的方式连接到这台主机了
然后如果我们主机b没有主机a的密钥的情况下,如果想要连接主机a,那么就无法连接,连输入密码的权力已经没有了
第二种安全优化的方法,我们首先应当应当查看getenforce查看linux应用模式,然后setenforce 0关闭其服务,并且关闭服务器(主机a)的防火墙,我们也可在文件 vim /etc/ssh/sshd_config中的 17行将其默认的端口号22改变成自己想要的端口号,然后重启sshd服务,我们这里以2021为例,然后取消注释
这样我们就无法通过原始的连接连接到我们的服务器了,我们只能输入相对应的端口号进行连接
第三种安全优化方法就是我们在文件 vim /etc/ssh/sshd_config中的 50行左右编写黑白名单, 白AllowUsers user1 user2 或者黑名单DenyUsers user1 user2
这个白名单的意思是系统中只有westos用户可以使用远程连接连接到服务器,
我们可以发现我们用电脑b的root用户无法连接服务器(电脑a),即使输入了正确的密码,而我们使用westos用户输入密码后就可以正常的连接
这个黑名单的意思是系统中除了lee用户其他的用户都可以使用远程连接连接到服务器,
我们可以发现使用root用户可以正常连接服务器,但是我们使用lee用户即使输入了正确的密码依然无法连接服务器。
**注意:这里我们需要注意的事是如果我们一旦设定了白名单之后,黑名单就会实效,我们白名单加入的用户之外的其他用户就自动的进入了黑名单。