1.sshd简介
sshd=secure shell
可以通过网络在主机中开机shell的服务
连接方式:
ssh username@ip ##文本模式的链接
ssh -x username@ip ##可以在链接成功后开启图形
*注意:
第一次链接陌生的主机是要建立认证文件
所以会询问是否建立,需要输入yes
再次链接此台主机时,因为已经生成~/.ssh/know_hosts文件,所以不需要再输入yes
(1)为了测试,首先打开真机中的两台虚拟机desktop和server
(2)为了方便区分,可以修改两台主机名以示区分,用以下命令可修改名称
hostnamectl set-name ****
server:令其为服务端
hostnamectl set-name server_ssh
desktop:令其为客户端
hostnamectl set-name client_ssh
(3)对两台主机进行ip修改
输入命令
nm-connection editor
修改server_ssh主机ip为172.25.254.136
修改client_ssh主机ip为172.25.254.236
输入命令
ifconfig
查看两台主机ip是否修改成功
*特殊地,极少数情况会出现下列错误
这时候,进入vim /root/.ssh/known_hosts,删除第二个含有本虚拟机ip的一段即可。
(4)删除/root/.ssh文件
输入命令
rm -fr /root/.ssh
(5)设置主机访问权限
vim /etc/hosts.deny ip ##禁止访问名单,即黑名单
vim /etc/hosts.allow ip ##允许访问名单,即白名单
sshd:All
再次进入发现认证被阻止
sshd:All EXCEPT172.25.254.136
即屏蔽所有ip,只给172.25.254.136开放
2.ssh的key认证
(1)服务端和客户端都删除/root/.ssh 的所有文件 rm -fr /root/.ssh
(2)服务端设置生成公钥生成锁
方法一:
ssh-keygen
为了方便,直接回车跳过加密过程
方法二:
ssh-keygen -f /root/.ssh/id_rsa -N ""
注:双引号可用单引号代替,为了方便,引号里面不加内容即不加密码
(3)服务端上传公钥
ssh-copy-id -i /root/.ssh/id_rsa.pub root@服务端ip
(4)验证是否上传正确
查看目录文件
ls /root/.ssh
查看id_rsa.pub(公钥)
查看authorized_keys(锁)
发现两者内容完全相同说明没有问题
(5)服务端禁止密码登陆
vim /etc/ssh/sshd_config
(6)重载服务使其生效
systemctl reload sshd.service
(7)客户端测试,发现没有权限
(8)分发钥匙
服务端将私钥发送给客户端的/root/.ssh/目录下
scp /root/.ssh/id_rsa root@172.25.254.236:/root/.ssh/
客户端查看/root/.ssh文件,发现私钥发送成功
(9)再次客户端连接服务端
发现不需要密码,即只有得到钥匙的用户才能链接,其他用户即使知道密码也不行。
*可在服务端删除/root/.ssh/authorized_keys文件,重复以上步骤,加深理解
具体如下:
注意:
连链接成功后记得ctrl+d或者exit退出链接用户回到本机。
3.sshd中的安全设定
(1)先还原密码认证登陆并重载
vim /etc/ssh/sshd_config
systemctl reload sshd.service
(2)root用户通过sshd服务的认证权限
PermitRootLogin yes --> no
再重载生效
(3)真机连接服务端测试
发现即使密码正确也会被提示要求输入三次,也即root用户访问权限被禁止
4.链接黑白名单
AllowUsers redhat
设定用户白名单,白名单出现默认不再名单中的用户不能使用sshd
(1)root下新建用户并设置密码
(2)vim /etc/ssh/sshd_config编辑配置文件并重载
(3)测试
a.在真实主机下连接服务机的redhat用户
ssh redhat@172.25.254.236
链接成功
b.退出redhat用户,连接服务机的超级用户,被拒绝,因为root用户不在白名单中,没有权限
c.白名单添加root,超级用户即可链接
*黑名单同理
注:黑名单设置需删除或注释掉白名单,否则两者冲突
5.用户的登陆审计
命令 | 功能 |
---|---|
w | 查看正在使用当前系统的用户 |
w-i | 查看来源ip |
w-f | 查看使用来源 |
last | 查看最后使用并退出的用户 |
last-b | 查看登陆没有成功的用户 |
w w -f w -i查看的是/run/utmp这个文件下的信息
如果将这个文件清空,就什么也查看不到
2)last 及lastb查看的是/var/log/btmp文件中的内容,清空该文件再次查看就什么也没有
6.添加登陆后显示的信息
(1)服务端编辑
vim /etc/motd
(2)真机链接