详解sshd服务

详解sshd服务

1.sshd的简介

SSH为Secure Shell 的缩写,指应用层的安全协议。SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。使用SSH协议可以有效防止远程登陆过程中的信息泄露问题。

连接方式:

ssh			username@ip			##文本模式的连接
ssh	-X		username@ip			##可以在连接成功后开机图形

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

在这里插入图片描述

远程服务:

scp  file  root@ip:dir		##上传
scp  root@ip:file dir		##下载

为了测试上述命令,我们首先需要作下面工作:
1)(真机中操作)打开虚拟机【desktop】和【server】

rht-vmctl		start		desktop
rht-vmctl		view		desktop
rht-vmctl		start		server
rht-vmctl		view		server

2)为了区别这两台主机,我们用以下命令修改两台主机名称:

hostnamectl		set-name		client_ssh.westos.com
hostnamectl		set-name		server_ssh.westos.com

修改后需要重启shell才能生效。当然主机名不唯一,可按自己想法来。

3)对两台主机进行网络配置。

修改client_ssh主机的ip为172.25.254.106
修改server_ssh主机的ip为172.25.254.206
此处的IP也不唯一,可自行修改,方便区分就好

读者若对此操作不熟悉,具体修改方式可以参照作者前面的博客【如何再Linux中运用vim命令轻松编辑文件】,在这篇文章的开头讲述了虚拟机的网络配置方式。

上面的操作完成后,我们便会的得到以下两台主机:
在这里插入图片描述

在这里插入图片描述

4)检测网络配置是否成功

首先可以用命令【ifconfig】,查看ip是否修改成功

其次用命令【ping ip】检测两台主机网络是否连通。例:我们在主机client_ssh(后面下文中的操作如不做声明,都默认在client_ssh中,将server_ssh作为客户端)进行测试。

ping		172.25.254.206

下图为测试成功!【退出——ctrl+c】
在这里插入图片描述

5)我们将主机(client_ssh)上的文件file上传到客户端(server_ssh)的/mnt目录中

(1)我们在主机建立如下文件

在这里插入图片描述

为了排除其他因素影响实验,我们要查看客户端的/mnt目录

在这里插入图片描述

(2)下面开始上传文件

scp		root@172.25.254.206:/mnt/

在这里插入图片描述

查看客户端是否接收成功:

在这里插入图片描述

补充说明:

由上述的简单介绍我们可知,当对方知道你的主机密码时便可以轻松完成连接,这种情况对于企业来说是不允许存在的,因此我们可以通过下面的方式来消除这种隐患

【修改权限列表,实现禁止或允许指定用户进行连接】

/etc/hosts.deny
/etc/hosts.allow

简单作出演示:

下面的设定表示:禁止所有用户远程连接本机
在这里插入图片描述

下面的设定表示: 允许其他用户远程连接,IP为172.25.254.250的主机被禁止
在这里插入图片描述

注意:
修改完毕后一定记着重新加载配置文件,修改才能生效

systemctl 		reload 		sshd.service

2.sshd的key认证

上面已经提到过,当我们第一次用主机连接客户端时,需要建立认证文件,输入【yes】后建立,键入密码即可完成远程连接。这是系统默认的认证方式。

接下来,给大家将要为大家介绍怎样自行设定认证方式:

实验目的:自行设定目标主机的认证方式,然后用另一台主机实现远程连接(我们将server_ssh作为目标主机,最终实现用client_ssh远程连接目标主机)

1)首先删除目标主机/root/.ssh文件

rm -rf   /root/.ssh

2)查看是否能ping通

在这里插入图片描述

3)生成密钥

ssh-keygen	
ssh-keygen		-f		/root/.ssh/id_rsa  -N “”			##两种方式目的相同

在这里插入图片描述

4)给用户添加新的认证方式,也就是给目标主机上锁(在目标主机的操作)

ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.206(目标主机的IP)

出现下图中的信息时,便添加成功
在这里插入图片描述

5)取消默认认证方式(仍然在目标主机上操作)

修改下面的文件

vim /etc/ssh/sshd_config   【文件78行,将yes改为no】

在这里插入图片描述

注意:
修改完毕后一定记着重新加载配置文件,修改才能生效

systemctl 		reload 		sshd.service

在这里插入图片描述

6)远程复制:目标机将密钥给主机【client_ssh】(在目标主机中操作)

scp 		/root/.ssh/id_rsa	 root172.25.254.106:/root/.ssh

在这里插入图片描述

在主机【client_ssh】中查看是否收到(事先将目录/.ssh中的文件清空):

在这里插入图片描述

7)测试,假如实验成功,会发现在连接目标主机时不需要密码(在主机【client_ssh】中操作)

ssh		root@172.25.254.206

从下图中可以看出我们在远程连接目标主机时,只用输入【yes】建立认证文件,不需要密码
在这里插入图片描述

3.sshd的安全设定

修改文件**/etc/ssh/sshd_config**

vim 		/etc/ssh/sshd_config
修改的命令行修改后的效果
78行 PasswordAuthentication yes / no是否允许用户通过系登陆的密码做sshd的认证
48行 PermitRootLogin yes / no是否允许root用户通过sshd服务的认证
52行 Allowusers student westos设定白名单,白名单出现默认不在名单中的用户不能使用sshd
53行 Denyusers westos设定黑名单,黑名单出现默认不在名单中的用户可以使用sshd

注意:
每一次修改文件后都要重新加载配置文件

systemctl		reload		sshd.service

示例:
1)
修改文件78行,改为【no】,修改后正常情况下用户无法登陆目标机
在这里插入图片描述
用主机远程连接
在这里插入图片描述

2)白名单设定

首先我们需要在目标主机建立两个用户以方便测试【westos】和【student】
(在下面实验开始之前我们需要把上一个实验中修改的内容还原,否则无论怎么做,目标主机会拒绝一切试图远程连接它的主机)

第一步:按上述命令介绍修改文件【/etc/ssh/sshd_config】如下

我们将白名单内容设定为:本机中只允许用户【student】可以使用sshd服务这句话很重要)。也就是说,没有出现在白名单中的用户不能被其他主机连接。
在这里插入图片描述

修改完毕后,使用命令重新加载sshd服务的配置文件。

systemctl		reload		sshd.service

第二步:我们使用另一台主机进行远程登陆。

测试一:使用【server_ssh】主机的超级用户身份登陆,由下图可知,正确输入三次密码后仍然没有连接成功,证明登陆被拒绝
在这里插入图片描述

测试二使用【server_ssh】主机的westos身份登陆,由下图可知,正确输入三次密码后仍然没有连接成功,证明登陆被拒绝
在这里插入图片描述

测试三:使用【server_ssh】主机的student身份登陆,由下图可知,正确输入密码后登陆成功。
在这里插入图片描述

4.添加sshd登陆信息

vim		/etc/motd

文件内容就是登陆后显示的信息

示例:我们修改目标机的文件内容,用主机登陆后查看是否显示了文件内的信息
1)添加下面的内容
在这里插入图片描述

2)连接目标机
在这里插入图片描述

5.用户的登陆审计

命令功能
w查看正在使用当前系统的用户
w -f查看使用来源
w -i显示IP
last查看使用过并退出的用户信息
lastb试图登陆但没成功的用户

示例:

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
sshd_config是OpenSSH服务的核心配置文件,它定义和控制SSH服务器的身份验证、访问控制、加密选项、会话选项等各种服务细节。掌握sshd_config的配置细节对于在Linux服务器上安全运行SSH非常重要。本文将详细分析sshd_config的设置说明和配置示例。 sshd_config的主要配置选项包括: 1. Authentication配置选项:这些选项控制SSH客户端连接到服务器时的身份验证过程。包括密码验证、公钥验证、PAM验证等多种认证方法。最常见的配置是将PasswordAuthentication设置为no,使用公钥认证方式替代默认的基于口令的认证方式。 2. Access Control配置选项:通过控制用户和组的访问权限,可以保护服务器免受未经授权的访问。这些选项包括UsePAM、AllowUsers、AllowGroups、DenyUsers、DenyGroups等。 3. Encryption配置选项:这些选项控制传输数据的加密方式和级别。包括Ciphers、MACs、KexAlgorithms等。通常情况下,开启较高强度的加密方式可以提高安全性,但需要更大的计算和网络带宽。 4. Session Options配置选项:这些选项控制每个SSH会话的行为方式。例如,ClientAliveInterval、ClientAliveCountMax可以控制客户端空闲连接断开的时间和次数;PermitTTY、ForceCommand、ChrootDirectory可以控制用户建立会话时的环境和限制。 除了上述四个主要配置选项外,还有许多其他选项。例如,PrintMotd、Banner、LogLevel、HostKey等,可以控制服务器运行时的日志输出、欢迎消息、主机密钥等。 使用sshd_config最好的方式是熟悉每个选项的含义,并选择适当的设置来满足具体的需求。可以访问OpenSSH的官方文档,查看每个选项的含义和设置说明。最好的实践是根据自己的环境和需求,进行针对性的配置和测试,以确保服务器的安全性和高效性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值