云计算百科
云计算领域专业知识百科平台

从远程运维到 Web 服务配置

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 内核日志
mail 邮件系统
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)

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(传统方式),两者选其一即可。

对比项iptablesfirewalld
配置存储位置 /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 基础配置

  • 安装 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>

  • 重启 Apache
  • systemctl restart httpd

  • 访问测试
    浏览器访问 http://server1/admin/,会弹出登录框,输入用户名 admin 和对应密码即可。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从远程运维到 Web 服务配置
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!