深入探讨Linux下企业的sshd服务

1.sshd简介

sshd(secure shell):可以通过网络在主机中开启shell的服务
客户端软件的连接方式:
ssh username@ip ##文本模式的连接
ssh -X username@ip ##可以在连接成功后开启图形

<1>真实主机连接客户端(文本模式的连接)
[kiosk@foundation66 Desktop]$ ssh root@172.25.254.166
可以查看到其下已经生成了~/.ssh/know_hosts文件所以不需要再次输入yes
在这里插入图片描述
注意:第一次连接陌生主机是需要建立认证文件,所以会询问是否建立,需要输入yes,再次连接此台主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes

<2>可以在连接成功后开启

[kiosk@foundation66 Desktop]$ ssh -X root@172.25.254.166
[root@client_sshd ~]# cheese

举例:
(1)连接两个主机之间的网络
<1>首先利用nm-connection-editor命令删除并添加客户端的ip地址等相关信息,简单的连接方式如下(具体的请看博客《如何将虚拟机中的数据到真实主机》)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<2>查看客户端的ip地址是否成功并创建一个westos用户
在这里插入图片描述
<3>更改主机的名字
命令如下
在这里插入图片描述
<4>主机名更改后重新开启一个shell便可以查看,结果如下:
在这里插入图片描述
<5>然后利用nm-connection-editor命令添加服务端的ip地址等相关信息,简单的连接方式如下(具体的请看博客《如何将虚拟机中的数据到真实主机》)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
<6>查看客户端的ip地址是否成功并创建一个redhat用户,同时更改主机的名字
在这里插入图片描述
<7>主机名更改后重新开启一个shell便可以查看,结果如下:
在这里插入图片描述
<8>在更改之后的shell界面下分别查看客户端,服务端的ip地址
客户端ip地址的结果为:
在这里插入图片描述
服务端ip地址的结果为:
在这里插入图片描述
<9>在客户端试图连接服务端的主机,发现连接成功
在这里插入图片描述
(2)设置仅不允许一个主机连接网络
<1>首先查看服务端的ip地址并且试图连接客户端
在这里插入图片描述
<2>进入/etc/hosts.deny文件内编辑文件
在这里插入图片描述
<3>在文件内添加可以连接本机网络的ip
在这里插入图片描述
也可以添加下面的命令:
在这里插入图片描述
<4>尝试在客户端连接服务端的网络,发现无法连接,这是因为在文件中设置了不允许ip为172.25.254.166的主机登录
在这里插入图片描述
(3)设置不允许所有主机连接网络
<1>进入/etc/hosts.deny文件内编辑文件
在这里插入图片描述
<2>尝试在真实主机连接服务端的网络,发现无法连接,这是因为在文件中设置了不允许任何主机连接服务端的网络
在这里插入图片描述
<3>尝试在客户端连接服务端的网络,发现无法连接,这是因为在文件中设置了不允许任何主机连接服务端的网络
在这里插入图片描述
(4)设置允许所有主机连接网络
<1>进入/etc/hosts.deny文件内编辑文件
在这里插入图片描述
在这里插入图片描述
<2>尝试在真实主机连接服务端的网络,发现可以连接,这是因为在文件中设置了允许任何主机连接服务端的网络
在这里插入图片描述
<3>尝试在客户端连接服务端的网络,发现可以连接,这是因为在文件中设置了允许任何主机连接服务端的网络
在这里插入图片描述
注意:允许的优先级是高于拒绝的

2.sshd的key认证

如果服务器的认证方式不安全,我们可以通过以下方式进行更改,以下方式皆为非对称加密(即使用公钥加密,私钥解密)
1.生成认证KEY,设置公钥并生成锁

[root@server ~]# 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:   ##确认密码   

2.上传公钥

ssh-copy-id-i/root.ssh/id_rsa.pub root@172.25.254.166

3.分发钥匙

scp /root/.ssh/id_rsa root@172.25.254.166:/root/.ssh/

4.测试
在客户主机中(172.25.254.166)
ssh root@172.25.254.186 ##连接时发现直接登陆不需要root登陆系统的密码认证
说明L远程复制:
scp file root@ip:dir ##上传
scp root@ip:file dir ##下载

<1>首先在两个虚拟机中都配置网络(具体操作查看博客中“如何复制虚拟机的数据到真实主机”)
在客户端的操作命令如下:
在这里插入图片描述
在服务端的操作命令如下:
在这里插入图片描述
尝试连接两个虚拟机,发现可以连接,说明网络没有问题
在这里插入图片描述
<2>利用远程控制,用真实主机操纵两个虚拟机:(具体操作查看博客中“如何复制虚拟机的数据到真实主机”)
真实主机连接客户端的命令如下:
在这里插入图片描述
真实主机连接服务端的命令如下:
在这里插入图片描述
<3>首先得在纯净环境下进行,故需要用rm -rf /root/.ssh命令处理,然后在客户端输入命令[root@client_sshd ~]# ssh-keygen,生成密钥。<客户端进行>
结果如下:
在这里插入图片描述
分析:

Enter file in which to save the key (/root/.ssh/id_rsa):  ##哪个目录下保存钥匙,默认是/root/.ssh/id_rsa目录下保存,此时只需要按下回车键即可
Enter passphrase (empty for no passphrase):   ##输入密码,默认是无密码,按下回车键即可
Enter same passphrase again:    ##再次输入密码,依旧按下回车键即可

补充:如果不想要输入很繁琐的回车键,也可以输入以下命令一步到位[root@client_sshd ~]# ssh-keygen -f /root/.ssh/id_rsa -N ""
<4>进入.ssh文件并查看里面的文件内容<客户端进行>

cd .ssh

注意:可以查看/root/.ssh文件下的两个文件,可以根据文件内的格式进行查看来判断文件内容是否有误
<5>认证客户端并进行认证文件查看,命令及结果显示如下:<客户端进行>
在这里插入图片描述
注意:id_rsa.pub(公钥)和authorized_keys(锁)内的内容是相同的,锁生成后就相当于加密成功
<6>清空服务端的/root/.ssh文件(因为认证文件默认放到了这个目录下,故为了使环境纯净,必须删除里面的内容)<服务端进行>

rm -rf.ssh

<7>试图用服务端连接客户端,会发现在没有认证前连接是需要密码的<服务端进行>
<8>上传公钥(生成锁)
在这里插入图片描述
注意:每次变化用户时,都需要退出,避免影响接下来的操作
<9>在客户端输入以下命令[root@client_sshd .ssh]# scp id_rsa root@172.25.254.186:/root/.ssh/,将文件发送至服务端的/root/.ssh文件下并进行查看:<客户端进行>
在这里插入图片描述
在这里插入图片描述
<10>再次在服务端尝试连接客户端,连接时会发现直接登陆不需要root登陆系统的密码认证<服务端进行>
在这里插入图片描述
<11>可以通过修改原始认证进一步了解认证密码:
在客户端输入命令进入认证配置文件并进行修改,再次给服务端发送认证文件,会发现服务端无法连接上客户端,命令如下:<客户端进行>
在这里插入图片描述
在配置文件中的修改:
在这里插入图片描述
命令及结果如下:<服务端进行>
在这里插入图片描述
分析:

PasswordAuthentication no     ##我们将原始认证进行更改,更改成密码认证是不被允许的,继而查看结果

注意:
<1>将配置文件更改后,一定要使用systemctl命令让其立刻生效,才可以进行检验
<2>认证之前,原始的认证要取消(即认证都要恢复成默认状态)
<3>文章中rm -rf .ssh也可以写成rm -rf /root/.ssh

3.sshd的安全设定

##PasswordAuthentication yes/no ##是否允许用户通过登陆系统的密码做sshd的认证
##PermitRootLogin yes/no ##是否允许root用户通过sshd服务的认证
##Allowusers student westos ##设定用户白名单,白名单指默认不在名单中的用户不能使用sshd
##Denyusers westos ##设定用户黑名单,黑名单指默认不在名单中的用户可以使用sshd
(1)设置是否允许用户通过登陆系统的密码做sshd的认证:
<1>首先设置允许用户通过登陆系统的密码做sshd的认证,输入命令进入程序编辑框,更改sshd配置中的文件(将PasswordAuthentication改为yes):
在这里插入图片描述
<2>尝试用真实主机连接客户端,会发现允许用户通过登陆系统的密码做sshd的认证
在这里插入图片描述
<3>设置不允许用户通过登陆系统的密码做sshd的认证,更改sshd配置中的文件(将PasswordAuthentication改为no):
在这里插入图片描述
<4>尝试用真实主机连接客户端,会发现不允许用户通过登陆系统的密码做sshd的认证
在这里插入图片描述
(2)设置是否允许root用户通过sshd服务的认证
<1>首先设置允许root用户通过sshd服务的认证,输入命令进入程序编辑框,更改sshd配置中的文件(PermitRootLogin yes):
在这里插入图片描述
命令如下:
在这里插入图片描述
注意:在进行此实验时,之前配置的文件都要恢复成默认的配置
<2>尝试用真实主机连接客户端,会发现允许root用户通过sshd服务的认证,结果如下:
在这里插入图片描述
<3>设置不允许root用户通过sshd服务的认证,输入命令进入程序编辑框,更改sshd配置中的文件(PermitRootLogin yes):
在这里插入图片描述
命令如下:
在这里插入图片描述
注意:在进行此实验时,之前配置的文件都要恢复成默认的配置
<4>尝试用真实主机连接客户端,会发现不允许root用户通过sshd服务的认证,结果如下:
在这里插入图片描述
(3)设定用户白名单
<1>首先查看是否有student,westos,reshat用户,若没有则建立:
在这里插入图片描述
<2>进入ssh配置的编辑文件中进行白名单的增加,更改ssh中的配置如下:
在这里插入图片描述
命令如下:
在这里插入图片描述
<3>在真实主机中尝试连接客户端的用户:
在白名单的用户连接时的结果:
在这里插入图片描述
不在白名单的用户连接时的结果:
在这里插入图片描述

(4)设定用户黑名单
<1>进入ssh配置的编辑文件中进行黑名单的增加,更改ssh中的配置如下:
在这里插入图片描述
命令如下:
在这里插入图片描述
<2>在真实主机中尝试连接客户端的用户:
在黑名单的用户连接时的结果:
在这里插入图片描述
不在黑名单的用户连接时的结果:
在这里插入图片描述

4.添加sshd登陆信息

vim /etc/motd ##文件内容就是登陆后显示的信息
<1>在客户端上输入命令[root@client_sshd ~]# vim /etc/motd,然后在里面添加sshd登陆信息:
在这里插入图片描述
所使用的命令如下:
在这里插入图片描述
<2>使用真实主机连接客户端,可以看到登陆成功后,会显示之前添加的sshd登陆信息
在这里插入图片描述

5.用户的登陆查看

1.w命令

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

w显示的信息都在/var/run/utmp下
<1>查看正在使用当前系统的用户
在这里插入图片描述
<2>查看正在使用当前系统的用户使用来源
在这里插入图片描述
<3>查看正在使用当前系统的用户显示IP
在这里插入图片描述
<4>查看/run/utmp中的内容,可以看到是乱码的
在这里插入图片描述
<5>证明/run/utmp存放的是w中的信息,输入的命令及结果如下:
在这里插入图片描述
分析:

[root@client_sshd ~]# >/run/utmp      ##清空/run/utmp
[root@client_sshd ~]# cat /run/utmp    ##查看/run/utmp中是否还有内容
[root@client_sshd ~]# w        ##输入w令查看是否还有当前系统正在使用的用户信息
 11:25:04 up  2:26,  0 users,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT

2.last命令 ##试图查看使用过并退出的用户信息
last中的信息都存放/var/log/wtmp 下
<1>查看使用过并退出的用户信息
首先在真实主机中连接客户端的westos用户并进行退出:
在这里插入图片描述
然后在客户端输入命令last进行查看:
在这里插入图片描述
<2>查看/var/log/wtmp中的内容,可以看到是乱码的
在这里插入图片描述
<3>证明/var/log/wtmp存放的是last中的信息,输入的命令及结果如下:
在这里插入图片描述
分析:

[root@client_sshd ~]# >/var/log/wtmp     ##清空/var/log/wtmp
[root@client_sshd ~]# cat /var/log/wtmp  ##查看/var/log/wtmp中是否还有内容
[root@client_sshd ~]# last       ##输入last命令查看是否还有用户信息
wtmp begins Sun Jan 13 11:09:51 2019

3.lastb ##试图登陆但没成功的用户信息
lastb中的信息都存放 /var/log/btmp下
<1>查看试图登陆但没成功的用户信息(密码输入错误)
首先在真实主机中连接客户端的westos用户并三次输错密码,再接着连接westos用户并三次输入密码:
在这里插入图片描述
然后在客户端输入命令lastb进行查看:
在这里插入图片描述
<2>查看/var/log/btmp中的内容,可以看到是乱码的
在这里插入图片描述
<3>证明/var/log/btmp存放的是lastb中的信息,输入的命令及结果如下:
在这里插入图片描述
分析:

[root@client_sshd ~]# >/var/log/btmp     ##清空/var/log/btmp
[root@client_sshd ~]# cat /var/log/btmp   ##查看/var/log/btmp中是否还有内容
[root@client_sshd ~]# lastb   ##输入lastb命令查看是否还有用户信息
btmp begins Sun Jan 13 11:20:14 2019
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值