一、实验环境配置
本次实验需要两台新的虚拟机,因此我们reset虚拟机aa 和 bb
- 修改虚拟机的主机名
- 配置基础ip网络
- 删除/root/.ssh/目录------恢复原始状态
1. 重置虚拟机aa,bb
# westos-vmctl reset aa
2. 修改虚拟机的主机名
# hostnamectl set-hostname bbbbbb.westos.org (bb虚拟机)
# hostnamectl set-hostname aaaaaaaa.westos.org(aa虚拟机)
3. 配置ip
aa虚拟机:172.25.254.100
bb虚拟机:172.25.254.200
设置完ip记得reload+up !!
4. 删除/root/.ssh/目录
在虚拟机aa,bb上删除/root/.ssh/目录,方便做实验!
# rm -fr /root/.ssh/
配置成功后,将虚拟机转换为无图形界面!ps:init 5 可换为有图形界面!
# init 3
5. 真机ssh虚拟机
在真机上远程连接虚拟机aa,bb
二、sshd服务的基本信息
1.作用
ssh通过网络远程连接主机!
client ----客户端,执行ssh操作的主机端
server-----服务端,被连接的主机端
2. 安装包
# dnf search ssh :查找ssh的安装包:openssh-server.x86_64
系统默认安装并开启sshd服务
3.主配置文件
# rpm -qc openssh-server.x86_64 : /etc/ssh/sshd_config
4. 默认端口
# netstat -antupe | grep ssh :查看ssh服务的默认端口 :默认为22端口
三、ssh命令的常用参数
将aa虚拟机作为服务端,bb虚拟机作为客户端进行实验。
1. 第一次ssh连接
# ssh -l root 172.25.254.100:第一次ssh连接会出现认证!
认证成功后即使不登陆,也会有密匙出现!
在客户端进入/root/.ssh/目录即可看到密匙。
接着进入服务端的目录/etc/ssh/ 也可查看密钥,该密钥与上完全一致,否则无法连接!!
2. ssh连接出现warning警告
当ssh 连接出现warning警告时,原因是密钥不匹配!
解决方法:按照提示删除文件的指定行即可!
--------------------------------------------------------------实验------------------------------------------
在服务端aa 删除 rm -fr ssh_host_* 文件!注意不要直接删除*
删除后重新启动sshd服务,密钥就会更改!
此时密钥与客户端bb的不一致,在客户端bb上连接aa时,会出现!!
解决方法很简单,按照提示,删除文件的第一行即可!删除后再次连接,就像第一次连接一样。
3. 其他常用参数
- -l :指定登陆用户
- -X :开启图形
- -f :后台运行
- -o :指定连接参数 ----【StrictHostKeyChecking=no ,首次连接不需要输入yes】
- -t :指定连接跳板
--------------------------------------------------实验-------------------------------------------------
默认情况下,ssh为文本连接,无法打开图形
# ssh -X -l root 172.25.254.200 :-X -l顺序不能反,成功打开图形
但是打开图形,占用了终端,因此可以利用-f 后台运行!
# ssh -X -f -l root 172.25.254.200 gedit : 将gedit打入后台运行
清空bb虚拟机的/root/.ssh文件,再次连接aa就是第一次连接,需要输入yes!
# ssh -o "StrictHostKeyChecking=no" -l root 172.25.254.100 : 首次连接不需要输入yes
# ssh -l root 172.25.254.73 -t ssh -l root 172.25.254.100 : 通过73主机连接100主机
在aa虚拟机:100上查看,其实是73连接的100
四、为服务器添加key认证
以上ssh认证方式是用户密码登陆,还有一张认证方式是key认证!
1. 生成加密密钥
(1)交互式方法
在客户端bb虚拟机生加密密钥
# ssh-keygen : 生成非对称加密密钥,一直回车即可!
(2)非交互式方法
首先删除/root/.ssh/id_*,重新生成密钥!
# ssh-keygen -f /root/.ssh/id_rsa -P "" :-f 指定文件,-P:密码为空 ,直接用钥匙开门,不用额外输入密码!
2. 对服务器进行加密
在客户端bb上对服务器aa进行加密
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.100 : 对服务器进行加密!
此时进入服务器aa查看:/root/.ssh/目录发现生成了authorized_keys文件,该文件与客户端的/root/.ssh/id_rsa.pub文件一样!!
3. 客户端测试
# ssh -i /root/.ssh/id_rsa -l root 172.25.254.100 :ssh连接用户,不用密码直接连接
其他主机ssh连接服务端仍然要密码登陆,因为没有私钥!
五、sshd安全优化参数
sshd优化参数在服务端主配置文件:/etc/ssh/sshd_config 进行设置!
- PasswordAuthentication yes|no :是否开启密码认证方式
- Port 2222 :设定端口为2222
- AllowUsers / DenyUsers lee:黑白名单设置
-------------------------------------------------实验--------------------------------------------------------
1. 是否开启密码认证
默认情况下,密码认证自动开启!当真机ssh连接aa时,可以使用密码认证或者key认证。
在服务端aa虚拟机,查询主配置文件:
進入該文件,關閉密碼認證方式!!
systemctl restart sshd :关闭后重启服务
在真机再次测试,发现无法通过密码认证方式连接aa
2. 设定端口
开始本次实验前,先关闭selinux和火墙!!
# setenforce 0 :关闭selinux服务
# systemctl disable --now firewalld:关闭火墙
修改端口为2222,修改成功后重启服务。
此时真机连接aa,显示连接失败!
# ssh -l root 172.25.254.100 -p 2222:加上端口号成功!
3. 黑名单/白名单设置
服务器设置黑名单!!
添加一行:DenyUsers root
ps:多个用户用空格间隔开!!
真机测试连接,root用户无法连接,westos用户可以连接!
服务器设置白名单!!
添加一行:AllowUsers root
在真机测试连接,只有root用户可以连接!!
ps:做完实验,恢复默认配置!!!