课前练习题-20250916-复习题
15. sshd 服务管理
-
SSH 的全称是什么?它主要用于解决什么问题?与 Telnet 相比有何优势?
答案:
- SSH 全称是 Secure Shell(安全外壳协议)。主要用于在网络中实现安全的远程登录和数据传输。
- 与 Telnet 相比,SSH 通过加密技术保护数据传输的机密性和完整性,而 Telnet 数据明文传输,存在安全风险。
-
SSH 协议的加密通信过程主要分为哪几个阶段?
答案:主要分为三个阶段:① 协议版本协商;② 密钥交换与会话加密建立(生成会话密钥);③ 身份认证与命令交互。
-
SSH 协议身份认证方式有哪些?
答案:核心身份认证方式:密码认证、公钥认证(密钥对认证)。
-
CentOS 7 中 SSH 服务默认使用的端口和协议版本是什么?如何查看当前使用的 SSH 协议版本?
答案:
- 默认端口是 22,默认协议版本是 SSH-2(SSH-1 因安全漏洞已基本淘汰)。
- 查看协议版本:
ssh -V
(客户端版本);服务端配置在/etc/ssh/sshd_config
中通过Protocol 2
指定。
-
使用 OpenSSH 客户端连接远程服务器(IP:10.0.0.5,用户名:admin,端口:2222)的命令是什么?连接时如何指定使用的私钥文件?
答案:
- 基本连接命令:
ssh -p 2222 admin@10.0.0.5
。 - 指定私钥文件:
ssh -i ~/.ssh/my_key -p 2222 admin@10.0.0.5
(-i
参数指定私钥路径)。
- 基本连接命令:
-
为避免每次连接服务器输入端口和用户名,如何通过客户端配置文件简化操作?请举例说明。
答案:编辑客户端配置文件
~/.ssh/config
(无则创建),添加服务器信息:Host webserverHostName 10.0.0.5User adminPort 2222IdentityFile ~/.ssh/my_key
保存后,直接使用
ssh webserver
命令连接。 -
使用 SSH 执行命令时,如何避免手动输入密码或确认主机密钥?
答案:
① 采用公钥认证(提前配置免密);
② 禁用主机密钥检查:
ssh -o StrictHostKeyChecking=no admin@10.0.0.5 "command"
;③ 结合
expect
工具自动处理交互(适用于必须使用密码的场景)。 -
SSH 公钥认证的核心原理是什么?为什么比密码认证更安全?
答案:
- 原理是:客户端生成密钥对(公钥 + 私钥),公钥上传至服务器的
~/.ssh/authorized_keys
,连接时服务器用公钥加密随机字符串,客户端用私钥解密并返回,验证通过则登录。 - 更安全是因为无需传输密码,私钥仅存于客户端,且暴力破解难度极高。
- 原理是:客户端生成密钥对(公钥 + 私钥),公钥上传至服务器的
-
CentOS 7 中 SSH 服务端的主配置文件路径是什么?该文件中
ListenAddress
参数的作用是什么?答案:
- 主配置文件路径是
/etc/ssh/sshd_config
。 ListenAddress
用于指定 SSH 服务监听的 IP 地址(如ListenAddress 192.168.1.10
表示仅监听内网 IP),默认监听所有网络接口。
- 主配置文件路径是
-
在生产环境中,为增强安全性,如何配置 SSH 服务端仅允许公钥认证,彻底禁用密码登录?
答案:编辑
/etc/ssh/sshd_config
,添加:PasswordAuthentication no PubkeyAuthentication yes
保存后重启sshd服务。
-
如何配置 SSH 服务端,禁止用户
test
登录,同时仅允许dev
组的用户登录?答案:编辑
/etc/ssh/sshd_config
,添加:DenyUsers test AllowGroups dev
保存后重启服务。
-
为避免闲置 SSH 连接占用资源,如何配置服务端自动断开 10 分钟无操作的会话?
答案:编辑
/etc/ssh/sshd_config
,添加:ClientAliveInterval 600 # 每600秒(10分钟)发送一次心跳 ClientAliveCountMax 0 # 无响应时立即断开(0表示不重试)
重启服务后生效。
-
除了禁用密码登录和修改默认端口,列举 3 种 SSH 服务端的安全加固措施。
答案:
① 限制允许登录的用户 / 组(
AllowUsers
/AllowGroups
);② 禁用 root 直接登录(
PermitRootLogin no
);③ 禁用 SSH Agent 转发(
AllowAgentForwarding no
);④ 限制最大认证尝试次数(
MaxAuthTries 3
);⑤ 启用 TCP Wrappers(通过
/etc/hosts.allow
和/etc/hosts.deny
限制来源 IP)。
16. 日志管理
-
systemd-journald 是什么?它在 CentOS 7 中的主要作用是什么?
答案:systemd-journald 是 systemd 系统管理套件中的日志服务,主要作用是收集、存储和管理系统及服务的日志信息,支持结构化日志格式,可实时收集内核、服务、应用程序等产生的日志。
-
rsyslog 是什么类型的服务?它与传统的 syslog 相比有何优势?
答案:
-
rsyslog 是一个高性能的日志收集和转发服务,属于 syslog 协议的增强实现。
-
相比传统 syslog,它支持更丰富的日志过滤、转发规则(如按级别、设施转发)、多种输出格式和远程日志存储,性能更优。
-
-
使用 journalctl 命令查看最近 100 条系统日志的命令是什么?如何只查看今天的日志?
答案:
-
查看最近 100 条日志:
journalctl -n 100
。 -
查看今天的日志:
journalctl --since today
或journalctl --since "2024-09-15 00:00:00"
(替换为当天日期)。
-
-
CentOS 7 中 rsyslog 的主配置文件路径是什么?该文件中主要定义了哪些内容?
答案:
- 主配置文件路径是
/etc/rsyslog.conf
及/etc/rsyslog.d/
目录下的子配置文件。 - 主要定义日志的来源(如内核、系统服务)、过滤规则(按设施、级别)、日志存储路径(如
/var/log/messages
)及转发规则(如发送到远程日志服务器)。
- 主配置文件路径是
-
CentOS 7 中 rsyslog 服务将日志存放到哪个目录?该目录下常见的日志文件有哪些,并说明其存储的内容。
答案:存放在/var/log目录。
- Ivar/log/messages,大多数系统日志消息记录在此处,不包括与身份验证、电子邮件处理和调度作业执行相关的消息以及纯碎与调试相关的消息。
- /var/log/secure,与安全性和身份验证事件相关的syslog消息。
- /var/log/maillog,与邮件服务器相关的syslog消息。
- /var/log/cron,与调度作业执行相关的syslog消息。
- /var//og/boot.log,与系统启动相关的非syslog控制台消息。
-
如何使用 journalctl 查看 sshd 服务的所有日志?如何查看 sshd 服务的错误级别日志?
答案:
-
查看 sshd 服务所有日志:
journalctl -u sshd
。 -
查看错误级别日志:
journalctl -u sshd -p err
(-p err
表示筛选优先级为错误及以上的日志)。
-
-
rsyslog 中日志级别从低到高分为哪些?若配置规则为
*.info;mail.none /var/log/messages
,表示什么含义?答案:
-
日志级别从低到高:debug、info、notice、warning(warn)、err(error)、crit、alert、emerg(panic)。
-
规则含义:所有设施的 info 及以上级别日志写入
/var/log/messages
,但邮件(mail)设施的所有日志除外(mail.none
)。
-
-
systemd-journald 的日志默认存储在哪里?这种存储方式有何特点?
答案:
-
默认存储在
/run/log/journal/
(临时存储,重启后丢失)或/var/log/journal/
(持久化存储,需手动启用)。 -
特点:日志以二进制格式存储,占用空间小,支持快速查询和结构化检索,无需手动轮转(自动管理大小)。
-
-
如何配置 rsyslog 客户端,将本地日志发送到 IP 为 192.168.1.200 的远程 rsyslog 服务器?
答案:编辑
/etc/rsyslog.conf
,添加转发规则:*.* @@192.168.1.200:514
(@@
表示使用 TCP 协议,@
表示 UDP,514 是默认端口),然后重启服务:systemctl restart rsyslog
。 -
如何使用 journalctl 查看昨天 18:00 到今天 08:00 之间的 nginx 服务日志?
答案:
journalctl -u nginx --since "yesterday 18:00:00" --until "today 08:00:00"
。--since
指定开始时间,--until
指定结束时间。 -
在 CentOS 7 中,systemd-journald 和 rsyslog 通常如何协作?各自的角色是什么?
答案:
- 协作方式:systemd-journald 负责实时收集所有日志(包括内核、服务、应用),rsyslog 则从 journald 中读取日志(通过
imjournal
模块),再根据配置进行过滤、格式化和存储(如写入/var/log/messages
等文件)或转发。 - 角色:journald 是日志收集的 “前端”,rsyslog 是日志处理和分发的 “后端”,结合两者可兼顾实时查询(journalctl)和传统文件存储(便于归档、分析)。
- 协作方式:systemd-journald 负责实时收集所有日志(包括内核、服务、应用),rsyslog 则从 journald 中读取日志(通过
17. 时间管理
-
在 CentOS 7 中,使用
date
命令查看当前系统时间和日期的默认输出格式是什么?如何显示当前的 UTC 时间?答案:
- 默认输出格式类似
Thu Sep 15 14:30:25 CST 2025
(包含星期、月、日、时间、时区、年份)。 - 显示 UTC 时间的命令是
date -u
。
- 默认输出格式类似
-
如何使用
date
命令将系统时间设置为 2025 年 9 月 15 日 15:30:00?设置后需要执行什么命令确保硬件时间写入硬件时钟?答案:
- 设置系统时间的命令是
date -s "2025-09-15 15:30:00"
。 - 写入硬件时钟的命令是
hwclock -w
(或clock -w
)。
- 设置系统时间的命令是
-
tzselect
命令的主要作用是什么?使用该命令设置时区后,需要注意什么?答案:
tzselect
用于交互式选择系统时区(通过地理区域层级选择)。- 该命令仅生成时区设置建议,不会自动应用,需手动将建议的时区配置(如
TZ='Asia/Shanghai'; export TZ
)添加到~/.bashrc
等文件中生效。
-
CentOS 7 中,系统默认时区的配置文件是什么?如何通过修改该文件直接将时区设置为上海时区?
答案:
- 默认时区配置文件是
/etc/localtime
(符号链接)。 - 设置为上海时区的命令:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
,执行后立即生效。
- 默认时区配置文件是
-
chronyd
是什么服务?它相比传统的ntpd
有何优势?答案:
chronyd
是 CentOS 7 默认的 NTP(网络时间协议)客户端服务,用于同步系统时间与远程时间服务器。- 优势:占用资源更少,同步速度更快,在网络不稳定时表现更好,支持更小的时间调整粒度。
-
如何启动
chronyd
服务并设置开机自启?如何查看该服务的运行状态?答案:
- 启动并设置开机自启:
systemctl start chronyd
和systemctl enable chronyd
。 - 查看状态:
systemctl status chronyd
。
- 启动并设置开机自启:
-
使用
chronyc
工具立即同步系统时间的命令是什么?如何查看当前时间同步的源服务器信息?答案:
- 立即同步时间:
chronyc -a makestep
(-a
表示无需确认,makestep
强制同步)。 - 查看源服务器信息:
chronyc sources
或chronyc sources -v
(详细信息)。
- 立即同步时间:
-
chronyd
的主配置文件路径是什么?如何修改配置文件,添加阿里云的 NTP 服务器(ntp.aliyun.com
)作为时间源?答案:
- 主配置文件路径是
/etc/chrony.conf
。 - 添加阿里云 NTP 服务器:编辑该文件,在
server
配置部分添加server ntp.aliyun.com iburst
(iburst
表示初始快速同步),保存后重启服务systemctl restart chronyd
。
- 主配置文件路径是
-
Linux 中 “硬件时钟” 和 “系统时钟” 有何区别?如何查看硬件时钟的当前时间?
答案:
- 区别:硬件时钟(RTC,实时时钟)是主板上的时钟芯片,断电后由电池供电;系统时钟是操作系统运行时维护的时钟,依赖系统。
- 查看硬件时钟:
hwclock
或clock
。
-
如何通过环境变量
TZ
临时修改当前 Shell 的时区为纽约时区(America/New_York)?该设置对其他 Shell 会话是否生效?答案:
- 临时修改命令:
export TZ='America/New_York'
。 - 该设置仅对当前 Shell 会话生效,关闭终端或切换会话后失效,如需永久生效需写入
~/.bashrc
等用户配置文件。
- 临时修改命令: