linux下的sshd服务

一.sshd简介

sshd(secure shell):可以通过网络在主机中开启shell的服务

客户端软件的连接方式:

ssh [email protected]	          ##文本模式的连接
ssh -X [email protected]	      ##可以在连接成功后开启图形

实验如下:

首先,我这个实验是由两台虚拟机进行,我们可根据上一篇博客来设置虚拟机server。

设置好的虚拟机server,它的ip是172.25.66.215

linux下的sshd服务
为了清楚的分辨两台虚拟机,我给两台虚拟机分别修改了名字

服务端虚拟机
linux下的sshd服务
客户端虚拟机

linux下的sshd服务

文本模式的连接

linux下的sshd服务

注意:第一次连接陌生主机是需要建立认证文件,所以会询问是否建立,需要输入yes,再次连接此台主机时,因为已经生成root/.ssh/know_hosts文件所以不需要再次输入yes

在连接后成功开启图形

linux下的sshd服务

二.sshd的key认证

key加密方式为非对称加密(即使用公钥加密,私钥解密)
也可以实现免密登陆

实验如下:
这个实验需要在纯净的环境下进行,如果以前做过这个实验要rm -rf /root/.ssh/*

linux下的sshd服务

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:                     ##确认密码   

linux下的sshd服务
查看是否生成**
linux下的sshd服务

也可使用以下代码跳过

ssh-****** -f /root/.ssh/id_isa  -P "")           默认保存,输入密码

linux下的sshd服务

2.上传公钥

ssh-copy-id  -i  /root.ssh/id_rsa.pub  [email protected]      #####给自己                                                            172.25.66.215上锁

linux下的sshd服务
查看给自己上锁是否成功

linux下的sshd服务
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/
看这个目录里是否有复制过来的东西
linux下的sshd服务
此时client并没有复制过来的东西,进行以下操作:
linux下的sshd服务
再去查看
linux下的sshd服务
为了确保,我们去测试。

测试

linux下的sshd服务
这说明我们已经实现了免密登陆。

三.ssh的安全设定

1.是否允许用户通过登陆系统的密码做sshd的认证(不让其他用户去试密码)

如图所示:
linux下的sshd服务
我们知道,远程登录只要知道用户名和密码就可以登陆,但是只知道用户名不知道密码的时候,我们可以一个一个去试,如上图,但这样极不安全,为了解决这个问题,我们进行以下实验。

实验:

1.vim /etc/ssh/sshd_config                          进去更改sshd配置中的文件

linux下的sshd服务

修改78行 将其修改为no

原来的:
linux下的sshd服务
注意:PasswordAuthentication yes/no 是否允许用户通过登陆系统的密码做sshd的认证

现在修改为:
linux下的sshd服务

  2. systemctl restart sshd.service        重启ssh服务,让服务生效

linux下的sshd服务
修改完记得还原参数

测试

linux下的sshd服务
总结:会发现不允许用户通过登陆系统的密码做sshd的认证(不给你试密码的权利)

(2)设置是否允许root用户通过sshd服务的认证

由图可看:

linux下的sshd服务
我们可以看到真机可以以root用户去通过sshd,登陆我们的虚拟机,这样不安全,为了解决这个问题,我们可以进行一下操作

实验如下:

1.vim /etc/ssh/sshd_config                          进去更改sshd配置中的文件

linux下的sshd服务

修改48行,将其改为no,有#的话,将#删除掉(#后面的内容系统不读取)

原来的:

linux下的sshd服务
注意:PermitRootLogin yes/no ##是否允许root用户通过sshd服务的认证

修改之后:
linux下的sshd服务

2.systemctl restart sshd.service

linux下的sshd服务

测试:

linux下的sshd服务

修改完记得还原参数

3.黑名单与白名单

Allowusers  westos	    ##设定用户白名单,白名单指默认不在名单中的用户不能使用sshd
Denyusers westos	      ##设定用户黑名单,黑名单指默认不在名单中的用户可以使用sshd

两者没有同时存在的必要

黑名单实验如下:

1.在服务端建立一个用户westos

linux下的sshd服务
此时我们可以看到是可以根据westos用户名和密码来登陆

linux下的sshd服务

2.vim /etc/ssh/sshd_config                          进去更改sshd配置中的文件

linux下的sshd服务

加入以下命令
linux下的sshd服务

3.systemctl restart sshd.service

linux下的sshd服务

测试如下:

linux下的sshd服务

白名单实验:

在vim /etc/ssh/sshd_config 文件中加入以下命令

linux下的sshd服务

重启服务:systemctl restart sshd.service

测试如下:

linux下的sshd服务

四.添加sshd登陆信息

1.vim /etc/motd        ##文件内容就是登陆后显示的信息

linux下的sshd服务
在里面输入以下内容:

linux下的sshd服务

测试:
linux下的sshd服务

总结:会显示之前添加的sshd登陆信息

五.用户的登陆查看

1.w命令

命令 含义
w 查看正在使用当前系统的用户
w -f 查看使用来源
w -i 显示IP

w显示的信息都在/var/run/utmp下

如图所示:

linux下的sshd服务

2.last命令                         ##试图查看使用过并退出的用户信息

last中的信息都存放/var/log/wtmp 下

如图所示:

linux下的sshd服务

3.lastb                                      ##试图登陆但没成功的用户信息

lastb中的信息都存放 /var/log/btmp下

如图所示:
linux下的sshd服务

测试

将连接虚拟机的主机用命令杀死

1.去连接虚拟机

linux下的sshd服务

2.查看并杀死

linux下的sshd服务