ssh服务
ssh服务是远程安全登录和管理Linux服务器的核心工具。
远程控制Linux操作
1、确认是否开启sshd服务
systemctl status sshd.service

2、确认默认端口22打开
netstat -tnlp|grep :22

3、连接远程服务器
格式:
ssh 用户身份@远程服务ip
exit #退出链接远程主机
例:
ssh root@localhost
第一次进行远程连接时,会生成密钥,方便下次连接使用。

假如再次连接远程主机,当远程主机ip发生变化时,需要清除缓存,重新生成密钥。
rm -fr ~/.ssh/known_hosts
ssh-keygen -R localhost #或删除指定条目
使用用户lzc进行远程连接server2
cat /etc/hosts #首先在server1解析远程用户名

ssh lzc@server2

当我们输入rootlogin密码后,出现报错

到server2的认证日志查看拒绝原因

密码错误,重置密码
sudo passwd lzc
另一种情况,lzc并未设置密码,也会导致登录失败,
cat /etc/shadow
·!! — 从未设置过密码
·* — 密码被锁定/禁用

以防后续出现这种错误,可以用密钥认证实现免密操作,详细方法见下文。
常见错误还有,远程服务端禁止原始密码认证或者禁止超级用户登录,此时需要对ssh服务配置文件/etc/ssh/sshd_config进行修改。

ssh常用参数
| -p | 指定端口(默认 22) | ssh -p 2222 user@host |
| -i | 指定私钥文件 | ssh -i ~/.ssh/my_key user@host |
| -l | 指定登录用户名 | ssh -l alice host |
| -o | 覆盖配置选项 | ssh -o "StrictHostKeyChecking=no" host |
安全加固建议
在/etc/ssh/sshd_config中配置:
# 禁用 root 直接登录
PermitRootLogin no
# 禁用密码认证,仅使用密钥
PasswordAuthentication no
PubkeyAuthentication yes
# 仅使用 SSH-2
Protocol 2
# 修改默认端口(可选,增加隐蔽性)
Port 2222
# 限制允许登录的用户
AllowUsers alice bob
# 空闲超时断开
ClientAliveInterval 300
ClientAliveCountMax 2
# 禁用空密码
PermitEmptyPasswords no
修改后执行 sudo systemctl restart/reload sshd 生效。
例:
ssh -l root localhost -o "StrictHostKeyChecking=no"
首次登录免密

ssh免密访问
1、在本地生成密钥对
ssh-keygen
持续回车

2、拷贝公钥到远程主机
ssh-copy-id server1
或者使用scp -rp .ssh/ server1:
假如用用户进行免密登录
ssh-copy-id lzc@server1 #拷贝到用户
3、再次登录则不需要密码
ssh server2
远程文件同步 scp和rsync
scp基本语法
scp file.txt user@host:/path/
# 本地 → 远程
scp file.txt user@host:/path/
# 远程 → 本地
scp user@host:/path/file.txt ./
# 目录(递归)
scp -r ./dir user@host:/path/
# 指定端口
scp -P 2222 file.txt user@host:/path/
rsync仅同步两个文件不同部分基本语法
# 基本语法
rsync [选项] 源 目标
# 本地 → 远程
rsync -avz ./file.txt user@host:/path/
# 远程 → 本地
rsync -avz user@host:/path/file.txt ./
# 目录同步
rsync -avz ./dir/ user@host:/path/dir/ # 同步目录内容
rsync -avz ./dir user@host:/path/ # 同步整个目录
# 常用选项组合
rsync -avz –progress –delete ./dir/ user@host:/backup/
系统日志
系统日志是排查问题、审计和安全分析的核心。
主要日志及其位置
| /var/log/messages | 系统通用日志 ,大多数日志信息 |
| /var/log/secure | 认证、安全相关(SSH、sudo 等)和错误日志文件 |
| /var/log/dmesg | 内核环缓冲区(硬件、驱动) |
| /var/log/boot.log | 启动过程日志 |
| /var/log/cron | 定时任务日志 |
| /var/log/yum.log | 包管理日志 |
| /var/log/journal/ | systemd journal 日志(二进制) |
| /var/log/maillog | 与邮件服务器相关的日志文件 |
systemd-journald服务
·收集、存储、管理全系统日志的二进制日志服务。
·存储位置/run/log。
journalctl 命令
常用命令
journalctl _SYSTEMD_UNIT=sshd.service ##查看sshd.service相关日志
journalctl -f ##实时跟踪日志
journalctl -u 服务名 ##查看特定服务
journalctl –since "时间" ##查看特定时间
journalctl -p err ##查看系统err
journalctl -p warning ##查看警告及以上
journalctl _UID=1000 ##查看指定用户
journalctl_PID=1246 ##查看特定进程
journalctl -k ##查看内核日志
journalctl_COMM=systemctl ##查看指定命令
日志持久化
默认日志存内存/run/log/journal/,重启丢失。
要形成永久日志,按如下操作:
mkdir /var/log/journal
chown root:systemd-journal /var/log/journal ##设置目录所有者,设置所属组。
chmod 2755 /var/log/journal/ ##组继承权限
systemctl restart systemd-journald
rsyslog
系统日志服务,负责收集、处理和转发日志。
1、主配置文件:/etc/rsyslog.conf
2、日志类型
| auth / authpriv | 认证/授权相关(登录、sudo) |
| cron | 定时任务(crontab、at) |
| daemon | 系统守护进程(无单独类型的服务) |
| kern | 内核日志 |
| 邮件系统 | |
| user | 用户级别日志(默认) |
| local0 ~ local7 | 自定义/本地使用(留给应用程序) |
| lpr | 打印服务 |
| news | 新闻组服务 |
| uucp | UUCP 协议 |
| ftp | FTP 服务 |
| syslog | 日志系统自身 |
3、日志级别
| debug | 7 | 调试信息,最详细 |
| info | 6 | 一般信息 |
| notice | 5 | 正常但重要 |
| warning / warn | 4 | 警告 |
| err / error | 3 | 错误 |
| crit | 2 | 严重错误 |
| alert | 1 | 必须立即处理 |
| emerg / panic | 0 | 系统不可用,最高级别 |
远程日志同步
·日志发送方
vim /etc/rsyslog.conf
*.* @日志接收方ip ##两个@是tcp一个@是udp

·日志接收方
vim /etc/rsyslog.conf
$ModLoad imudp ##加载UDP输入模块
$UDPServerRUN 514 ##监听UDP 514端口接收日志
systemctl restart rsyslog
·验证
ss -tnlp |grep :514 ##是否监听514端口

at–系统延时任务
·安装at命令
yum provides */at ##寻找at命令
yum install -y /usr/bin/at
systemctl start atd
·输入命令
at now +2 min
at> echo "Hello from the at command" > /dev/pts/0
at> <EOT> ##ctrl+D退出
·查看命令
atq
2 Tue Jul 21 13:38:00 2026 a root
yum install -y mailx
yum install -y postfix ##用于收发文件
systemctl start postfix
mail ##用于读写文件
crontab管理定期任务
设置周期性定时任务,按指定时间间隔自动执行命令或脚本。
1、常用命令
# 编辑当前用户的 crontab
crontab -e
# 查看当前用户的任务列表
crontab -l
# 删除当前用户的所有任务
crontab -r
# 查看指定用户的任务(root 权限)
sudo crontab -u username -l
sudo crontab -u username -e
2、时间格式
-
-
-
-
- command
│ │ │ │ │
│ │ │ │ └── 星期 (0-7, 0和7都是周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
- command
-
-
-
3、特殊输入
| * | 任意值 |
| , | 列表,如 1,3,5 |
| – | 范围,如 1-5 |
| / | 步长,如 */10 每10分钟 |
例:
*/5 * * * * /home/user/backup_db.sh >> /var/log/backup.log 2>&1 ## 每天凌晨3点备份数据库
0 2 * * 0 /home/user/clean_logs.sh ## 每周日凌晨2点清理日志
* * * * * uptime >> /tmp/uptime.log ## 每分钟记录系统负载
* * * * * sleep 10;date ## 每隔10s完成一次任务
* * * * * sleep 20;date
* * * * * sleep 30;date
* * * * * sleep 40;date
* * * * * sleep 50;date
ps -aux ##可以查看进程
4、cron权限设定
默认所有用户可以设定cron。
·用户黑名单
/etc/cron.deny
·用户白名单
/etc/cron.allow
NFS实现文件共享
1、安装nfs-utils安装包,客户端和服务端都安装。
注:后续都以server1为服务端,server2为客户端。
yum install nfs-utils
systemctl start nfs
2、设置共享内容以及客户端权限
在server1
vim /etc/exports
共享文件目录 目标服务器(权限)#添加内容格式
/mnt/nfsdata node1(权限) node2(权限) #控制不同客户端的权限
/mnt/nfsdata node1(rw,uid,gid) ##指定创建文件的用户和组
chmod 777 /nfs ##修改文件系统权限
exportfs -rv #重载nfs服务配置
例:

3、接收共享资源
在server2
mount 服务端ip:/共享文件目录 /nfs
autofs服务配置
在客户端安装,可以在用户需要使用服务端共享文件时实现自动挂载服务,在不需要时自动卸载。
1、安装autofs
yum install autofs -y
systemctl start autofs
2、设置自动挂载点
vim /etc/auto.master
挂载点 /etc/auto.nfs

3、设置最终挂载点
#最终挂载点 需要挂载的共享目录
data server2/mnt/nfs
4、重启autofs服务
systemctl restart autofs
cd /nfs/data #自动挂载点不使用的情况下,自动卸载,使用该命令重新挂载
补:
修改autofs卸载时间间隔方法:
vim /etc/sysconfif/autofs
TIMEOUT=5
systemctl restart autofs
系统引导(boot)/grub2/
计算机从开机到操作系统加载完成的整个过程。
引导流程
开机 → BIOS/UEFI → 引导设备选择 → MBR/GPT → Bootloader → 内核加载 → initramfs → systemd启动管理所有进程 → 系统就绪
grub2引导阶段
| Stage 1 | boot.img | MBR 中的 446 字节 |
| Stage 1.5 | core.img | 文件系统驱动 |
| Stage 2 | /boot/grub2/ | 读取配置,显示菜单 |
grub配置文件:/boot/grub2/grub.cfg
问题修复
假设删除/boot/grub2/grub.cfg,怎么重新成功引导系统
1、进入grub模式,查看磁盘分区,设置根分区。
ls
ls (hd0,msdos1)/ #查看分区内容,找到包含/boot的分区
ls (hd0,msdos2)/
set root='hd0,msdos1'
2、加载内核
linux16 /vmlinuz-3.10.0-1160.e17.x86_64 root=/dev/centos/root net.ifnames=0
3、加载 initramfs
initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
4、启动系统
boot
ISCSI
iscsi服务配置
服务端
#安装服务端软件
yum install -y targetcli
systemctl start target
systemctl enable –now target
#targetcli配置如下
/backstores/block> create demo /dev/sdc
/iscsi/iqn.20...ge1/tpg1/acls> create iqn.2019-10.com.example:demokey
/iscsi/iqn.20...ge1/tpg1/luns> create /backstores/blocks/demo
storage object or path not valid
exit

客户端
#安装客户端软件
yum install -y iscsi-initiator-utils.x86_64
#修改名称与服务端相同(安全认证与访问控制)
vim /etc/iscsi/initiatorname.iscsi
#修改格式类似于
InitiatorName=iqn.2019-10.com.example:demokey
#发现设备
iscsiadm -m discovery -t sst -p 192.168.88.142
#登录设备
iscsiadm -m node -l


systemd管理服务
systemd 是 Linux 系统中最常用的初始化系统(init system),用于引导用户空间并管理用户进程。它在 RHEL/CentOS 7 及之后版本中取代了传统的 SysV init。
核心特性:
并行化启动:同时启动多个服务,显著加快系统启动速度。
按需启动:只在需要时才启动守护进程,节省资源。
进程跟踪:使用 Linux cgroups(控制组) 跟踪和管理进程树,确保服务停止时所有子进程都被正确清理。
挂载管理:维护挂载点和自动挂载点,替代传统的 /etc/fstab 部分功能。
依赖控制:实现基于依赖关系的服务控制逻辑,确保服务按正确顺序启动。
systemd cgroups 层级结构
systemd 使用 cgroups 将系统进程组织成树形结构,主要包含三个顶层切片(Slice):
| user.slice | 用户会话进程 | 用户登录后产生的 SSH、bash 进程 |
| system.slice | 系统服务进程 | sshd.service、httpd.service、mariadb.service |
| machine.slice | 虚拟机或容器进程 | QEMU/KVM 虚拟机 |
每个切片默认获得相同的 CPU 时间份额(CPUShares=1024),调度器在它们之间公平分配 CPU 资源。
查看服务状态(systemctl status)
systemctl status sshd.service
输出字段含义:
| loaded | 单元配置文件已成功加载并处理 |
| active (running) | 服务正在运行,有一个或多个持续进程 |
| active (exited) | 服务已完成一次性配置任务(如 sysctl) |
| active (waiting) | 服务正在运行但等待某个事件(如 network-online) |
| inactive | 服务未运行 |
| enabled | 服务已设置为开机自动启动 |
| disabled | 服务未设置为开机自动启动 |
管理服务:启动、停止、重启
以sshd服务为例
| 查看服务状态 | systemctl status sshd |
| 启动服务 | systemctl start sshd |
| 停止服务 | systemctl stop sshd |
| 重启服务 | systemctl restart sshd |
| 重新加载配置(不重启) | systemctl reload sshd |
| 设置开机自启 | systemctl enable sshd |
| 取消开机自启 | systemctl disable sshd |
屏蔽服务(mask)
如果系统中存在冲突的服务(如 network 和 NetworkManager),为了防止管理员误启动,可以将其“屏蔽”。
·禁用(disable):服务不会开机自启,但可以手动启动。
·屏蔽(mask):服务既不能手动启动,也不能自动启动。
systemctl mask firewalld # 屏蔽防火墙服务
systemctl unmask firewalld # 取消屏蔽
查看所有单元和服务
systemctl list-units –all # 查看所有单元(含 inactive)
systemctl list-units –type=service # 仅查看服务单元
systemctl list-unit-files # 查看所有单元文件的启用/禁用状态
单元文件位置
| 最高 | /etc/systemd/system/ | 管理员自定义或覆盖的单元文件 |
| 次高 | /run/systemd/system/ | 运行时动态生成的单元文件(重启后丢失) |
| 默认 | /usr/lib/systemd/system/ | 软件包自带的单元文件(系统维护者提供) |
firewalld 防火墙配置指南
CentOS 7 之后,系统提供了两种防火墙管理方式:firewalld(默认推荐)和 iptables(传统方式),两者选其一即可。
| 配置存储位置 | /etc/sysconfig/iptables | /usr/lib/firewalld/、/etc/firewalld/*.xml |
| 配置格式 | 命令行规则链 | XML 文件 + 区域(zone)概念 |
| 动态更新 | 需要重启服务生效 | 运行时和永久配置分离,修改后无需重启 |
| 管理方式 | 纯命令行 | 命令行 + 图形化工具(firewall-config) |
核心概念:区域(Zones)
firewalld 通过“区域”来管理不同网络的信任级别。每个网络接口可以绑定到一个区域,不同区域有不同的默认规则。
| trusted | ✅ 接受所有连接 | 内部完全可信网络 |
| home | 仅接受 ssh、mdns、ipp-client、samba-client、dhcpv6-client | 家庭网络环境 |
| internal | 同 home | 内部企业网络 |
| work | 仅接受 ssh、ipp-client、dhcpv6-client | 办公网络 |
| public | 仅接受 ssh、dhcpv6-client | 默认区域,公共环境(如咖啡馆、机场) |
| external | 仅接受 ssh,支持 IPv4 伪装转发 | 外部网关环境 |
| dmz | 仅接受 ssh | 非军事区(DMZ) |
| block | 🚫 拒绝所有入站连接 | 高安全隔离环境 |
| drop | 🚫 丢弃所有入站连接(无回复) | 最高安全级别 |
安装iptables
yum install -y iptables iptables-services
systemctl disable –now firewalld
常用命令
1、 查看防火墙状态
firewall-cmd –state
firewall-cmd –list-all
2、放行服务
firewall-cmd –add-service=http –permanent
firewall-cmd –add-service=https –permanent
3、放行端口
firewall-cmd –add-port=8080/tcp –permanent
firewall-cmd –add-port=3306/tcp –permanent
4、查看当前区域
firewall-cmd –get-default-zone
firewall-cmd –get-active-zones
5、重新加载配置
firewall-cmd –reload
6、查询规则是否已添加
firewall-cmd –query-service=http
firewall-cmd –query-port=8080/tcp
7、移除规则
firewall-cmd –remove-service=http –permanent
firewall-cmd –remove-port=8080/tcp –permanent
Web 服务配置指南
Apache 基础配置
yum install -y httpd
systemctl start httpd
systemctl enable httpd
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d/
网站根目录:/var/www/html/
CGI 脚本目录:/var/www/cgi-bin/
日志目录:/var/log/httpd/
echo "Hello, World!" > /var/www/html/index.html
CGI 脚本配置
创建 CGI 程序(位于 /var/www/cgi-bin/ 目录):
cd /var/www/cgi-bin/
vim test.cgi
脚本内容:
#!/bin/bash
echo 'Content-type:text/html'
echo
ls -l /
设置可执行权限:
chmod a+x test.cgi
访问测试:
http://server1/cgi-bin/test.cgi
SELinux 对 Web 服务的影响
1、 SELinux 布尔值(Booleans)
SELinux 策略可以通过启用或禁用布尔值来动态调整。这些布尔值允许在无需修改策略文件的情况下,改变 SELinux 的部分行为。
| httpd_enable_cgi | 是否允许 Apache 执行 CGI 脚本 |
| httpd_can_network_connect | 是否允许 Apache 向外发起网络连接 |
| httpd_can_connect_ftp | 是否允许 Apache 连接 FTP 服务器 |
| httpd_serve_cgi_files | 是否允许 Apache 提供 CGI 文件 |
2、管理布尔值:
getsebool -a # 查看所有布尔值
getsebool httpd_enable_cgi # 查看特定布尔值
setsebool httpd_enable_cgi=on # 临时启用(重启后丢失)
setsebool -P httpd_enable_cgi=on # 永久启用(-P 持久化)
3、主机访问控制
vi /etc/httpd/conf/httpd.conf
示例:只允许 192.168.88.142 访问 /var/www/html/admin 目录:
<Directory "/var/www/html/admin">
Require all granted
Order deny,allow
deny from all
allow from 192.168.88.142
</Directory>
用户认证(Basic Authentication)
为目录设置用户名密码认证:
htpasswd -c /etc/httpd/conf/httpaswd admin
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/admin">
AuthUserFile /etc/httpd/conf/httpaswd
AuthName "Input user name and password"
AuthType basic
Require user admin
# Require valid-user # 如果密码文件中有多个用户,可使用此选项放行所有合法用户
</Directory>
systemctl restart httpd
浏览器访问 http://server1/admin/,会弹出登录框,输入用户名 admin 和对应密码即可。
网硕互联帮助中心


评论前必须登录!
注册