linux下的sshd服务
一.sshd简介
sshd(secure shell):可以通过网络在主机中开启shell的服务
客户端软件的连接方式:
ssh [email protected] ##文本模式的连接
ssh -X [email protected] ##可以在连接成功后开启图形
实验如下:
首先,我这个实验是由两台虚拟机进行,我们可根据上一篇博客来设置虚拟机server。
设置好的虚拟机server,它的ip是172.25.66.215
为了清楚的分辨两台虚拟机,我给两台虚拟机分别修改了名字
服务端虚拟机
客户端虚拟机
文本模式的连接:
注意:第一次连接陌生主机是需要建立认证文件,所以会询问是否建立,需要输入yes,再次连接此台主机时,因为已经生成root/.ssh/know_hosts文件所以不需要再次输入yes
在连接后成功开启图形
二.sshd的key认证
key加密方式为非对称加密(即使用公钥加密,私钥解密)
也可以实现免密登陆
实验如下:
这个实验需要在纯净的环境下进行,如果以前做过这个实验要rm -rf /root/.ssh/*
1.生成认证KEY,设置公钥并生成锁
[[email protected] ~]# ssh-****** ##生成**的命令
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: ##确认密码
查看是否生成**
也可使用以下代码跳过
ssh-****** -f /root/.ssh/id_isa -P "") 默认保存,输入密码
2.上传公钥
ssh-copy-id -i /root.ssh/id_rsa.pub [email protected] #####给自己 172.25.66.215上锁
查看给自己上锁是否成功
3.分发钥匙
scp /root/.ssh/id_rsa [email protected]:/root/.ssh/ 将自己的钥匙复 制给client(172.25.66.115)
在client虚拟机里查看== ls -ld /root/.ssh/==
看是否有这个目录,如果没有,去连接一下,在输入密码时候ctrl+c
ls -l /root/.ssh/
看这个目录里是否有复制过来的东西
此时client并没有复制过来的东西,进行以下操作:
再去查看
为了确保,我们去测试。
测试:
这说明我们已经实现了免密登陆。
三.ssh的安全设定
1.是否允许用户通过登陆系统的密码做sshd的认证(不让其他用户去试密码)
如图所示:
我们知道,远程登录只要知道用户名和密码就可以登陆,但是只知道用户名不知道密码的时候,我们可以一个一个去试,如上图,但这样极不安全,为了解决这个问题,我们进行以下实验。
实验:
1.vim /etc/ssh/sshd_config 进去更改sshd配置中的文件
修改78行 将其修改为no
原来的:
注意:PasswordAuthentication yes/no 是否允许用户通过登陆系统的密码做sshd的认证
现在修改为:
2. systemctl restart sshd.service 重启ssh服务,让服务生效
修改完记得还原参数
测试:
总结:会发现不允许用户通过登陆系统的密码做sshd的认证(不给你试密码的权利)
(2)设置是否允许root用户通过sshd服务的认证
由图可看:
我们可以看到真机可以以root用户去通过sshd,登陆我们的虚拟机,这样不安全,为了解决这个问题,我们可以进行一下操作
实验如下:
1.vim /etc/ssh/sshd_config 进去更改sshd配置中的文件
修改48行,将其改为no,有#的话,将#删除掉(#后面的内容系统不读取)
原来的:
注意:PermitRootLogin yes/no ##是否允许root用户通过sshd服务的认证
修改之后:
2.systemctl restart sshd.service
测试:
修改完记得还原参数
3.黑名单与白名单
Allowusers westos ##设定用户白名单,白名单指默认不在名单中的用户不能使用sshd
Denyusers westos ##设定用户黑名单,黑名单指默认不在名单中的用户可以使用sshd
两者没有同时存在的必要
黑名单实验如下:
1.在服务端建立一个用户westos
此时我们可以看到是可以根据westos用户名和密码来登陆
2.vim /etc/ssh/sshd_config 进去更改sshd配置中的文件
加入以下命令
3.systemctl restart sshd.service
测试如下:
白名单实验:
在vim /etc/ssh/sshd_config 文件中加入以下命令
重启服务:systemctl restart sshd.service
测试如下:
四.添加sshd登陆信息
1.vim /etc/motd ##文件内容就是登陆后显示的信息
在里面输入以下内容:
测试:
总结:会显示之前添加的sshd登陆信息
五.用户的登陆查看
1.w命令
命令 | 含义 |
---|---|
w | 查看正在使用当前系统的用户 |
w -f | 查看使用来源 |
w -i | 显示IP |
w显示的信息都在/var/run/utmp下
如图所示:
2.last命令 ##试图查看使用过并退出的用户信息
last中的信息都存放/var/log/wtmp 下
如图所示:
3.lastb ##试图登陆但没成功的用户信息
lastb中的信息都存放 /var/log/btmp下
如图所示:
测试:
将连接虚拟机的主机用命令杀死
1.去连接虚拟机
2.查看并杀死