从远程运维到 Web 服务配置

发布时间:2026/7/26 23:41:03
从远程运维到 Web 服务配置 ssh服务ssh服务是远程安全登录和管理Linux服务器的核心工具。远程控制Linux操作1、确认是否开启sshd服务systemctl status sshd.service2、确认默认端口22打开netstat -tnlp|grep :223、连接远程服务器格式ssh 用户身份远程服务ip exit #退出链接远程主机例ssh rootlocalhost第一次进行远程连接时会生成密钥方便下次连接使用。假如再次连接远程主机当远程主机ip发生变化时需要清除缓存重新生成密钥。rm -fr ~/.ssh/known_hosts ssh-keygen -R localhost #或删除指定条目使用用户lzc进行远程连接server2cat /etc/hosts #首先在server1解析远程用户名ssh lzcserver2当我们输入rootlogin密码后出现报错到server2的认证日志查看拒绝原因密码错误重置密码sudo passwd lzc另一种情况lzc并未设置密码也会导致登录失败cat /etc/shadow·!! — 从未设置过密码·* — 密码被锁定/禁用以防后续出现这种错误可以用密钥认证实现免密操作详细方法见下文。常见错误还有远程服务端禁止原始密码认证或者禁止超级用户登录此时需要对ssh服务配置文件/etc/ssh/sshd_config进行修改。ssh常用参数参数说明示例-p指定端口默认 22ssh -p 2222 userhost-i指定私钥文件ssh -i ~/.ssh/my_key userhost-l指定登录用户名ssh -l alice host-o覆盖配置选项ssh -o StrictHostKeyCheckingno host安全加固建议在/etc/ssh/sshd_config中配置# 禁用 root 直接登录PermitRootLogin no# 禁用密码认证仅使用密钥PasswordAuthentication no PubkeyAuthenticationyes# 仅使用 SSH-2Protocol2# 修改默认端口可选增加隐蔽性Port2222# 限制允许登录的用户AllowUsers alice bob# 空闲超时断开ClientAliveInterval300ClientAliveCountMax2# 禁用空密码PermitEmptyPasswords no修改后执行 sudo systemctl restart/reload sshd 生效。例ssh -l root localhost -o StrictHostKeyCheckingno首次登录免密ssh免密访问1、在本地生成密钥对ssh-keygen持续回车2、拷贝公钥到远程主机ssh-copy-id server1或者使用scp -rp .ssh/ server1:假如用用户进行免密登录ssh-copy-id lzcserver1 #拷贝到用户3、再次登录则不需要密码ssh server2远程文件同步 scp和rsyncscp基本语法scp file.txt userhost:/path/# 本地 → 远程scpfile.txt userhost:/path/# 远程 → 本地scpuserhost:/path/file.txt ./# 目录递归scp-r./dir userhost:/path/# 指定端口scp-P2222file.txt userhost:/path/rsync仅同步两个文件不同部分基本语法# 基本语法rsync[选项]源 目标# 本地 → 远程rsync-avz./file.txt userhost:/path/# 远程 → 本地rsync-avzuserhost:/path/file.txt ./# 目录同步rsync-avz./dir/ userhost:/path/dir/# 同步目录内容rsync-avz./dir userhost:/path/# 同步整个目录# 常用选项组合rsync-avz--progress--delete./dir/ userhost:/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_UNITsshd.service##查看sshd.service相关日志journalctl-f##实时跟踪日志journalctl-u服务名##查看特定服务journalctl--since时间##查看特定时间journalctl-perr##查看系统errjournalctl-pwarning##查看警告及以上journalctl_UID1000##查看指定用户journalctl_PID1246##查看特定进程journalctl-k##查看内核日志journalctl_COMMsystemctl##查看指定命令日志持久化默认日志存内存/run/log/journal/重启丢失。要形成永久日志按如下操作mkdir/var/log/journalchownrootsystemd-journal /var/log/journal##设置目录所有者设置所属组。chmod2755/var/log/journal/##组继承权限systemctl restart systemd-journaldrsyslog系统日志服务负责收集、处理和转发日志。1、主配置文件/etc/rsyslog.conf2、日志类型类型说明auth/authpriv认证/授权相关登录、sudocron定时任务crontab、atdaemon系统守护进程无单独类型的服务kern内核日志mail邮件系统user用户级别日志默认local0~local7自定义/本地使用留给应用程序lpr打印服务news新闻组服务uucpUUCP 协议ftpFTP 服务syslog日志系统自身3、日志级别级别数值说明debug7调试信息最详细info6一般信息notice5正常但重要warning/warn4警告err/error3错误crit2严重错误alert1必须立即处理emerg/panic0系统不可用最高级别远程日志同步·日志发送方vim/etc/rsyslog.conf *.* 日志接收方ip##两个是tcp一个是udp·日志接收方vim/etc/rsyslog.conf$ModLoadimudp##加载UDP输入模块$UDPServerRUN514##监听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 ##ctrlD退出·查看命令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、常用命令# 编辑当前用户的 crontabcrontab-e# 查看当前用户的任务列表crontab-l# 删除当前用户的所有任务crontab-r# 查看指定用户的任务root 权限sudocrontab-uusername-lsudocrontab-uusername-e2、时间格式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.log21## 每天凌晨3点备份数据库02* *0/home/user/clean_logs.sh## 每周日凌晨2点清理日志* * * * *uptime/tmp/uptime.log## 每分钟记录系统负载* * * * *sleep10;date## 每隔10s完成一次任务* * * * *sleep20;date* * * * *sleep30;date* * * * *sleep40;date* * * * *sleep50;dateps-aux##可以查看进程4、cron权限设定默认所有用户可以设定cron。·用户黑名单/etc/cron.deny·用户白名单/etc/cron.allowNFS实现文件共享1、安装nfs-utils安装包客户端和服务端都安装。注后续都以server1为服务端server2为客户端。yum install nfs-utils systemctl start nfs2、设置共享内容以及客户端权限在server1vim /etc/exports 共享文件目录 目标服务器权限#添加内容格式 /mnt/nfsdata node1(权限 node2(权限 #控制不同客户端的权限 /mnt/nfsdata node1(rw,uid,gid) ##指定创建文件的用户和组 chmod 777 /nfs ##修改文件系统权限 exportfs -rv #重载nfs服务配置例3、接收共享资源在server2mount 服务端ip:/共享文件目录 /nfsautofs服务配置在客户端安装可以在用户需要使用服务端共享文件时实现自动挂载服务在不需要时自动卸载。1、安装autofsyuminstallautofs-ysystemctl start autofs2、设置自动挂载点vim/etc/auto.master 挂载点 /etc/auto.nfs3、设置最终挂载点#最终挂载点 需要挂载的共享目录data server2/mnt/nfs4、重启autofs服务systemctl restart autofs cd /nfs/data #自动挂载点不使用的情况下自动卸载使用该命令重新挂载补修改autofs卸载时间间隔方法vim /etc/sysconfif/autofs TIMEOUT5 systemctl restart autofs系统引导(boot)/grub2/计算机从开机到操作系统加载完成的整个过程。引导流程开机 → BIOS/UEFI → 引导设备选择 → MBR/GPT → Bootloader → 内核加载 → initramfs → systemd启动管理所有进程 → 系统就绪grub2引导阶段阶段文件作用Stage 1boot.imgMBR 中的 446 字节Stage 1.5core.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 roothd0,msdos12、加载内核linux16 /vmlinuz-3.10.0-1160.e17.x86_64 root/dev/centos/root net.ifnames03、加载 initramfsinitrd16 /initramfs-3.10.0-1160.el7.x86_64.img4、启动系统bootISCSIiscsi服务配置服务端#安装服务端软件yuminstall-ytargetcli systemctl start target systemctlenable--nowtarget#targetcli配置如下/backstores/blockcreate demo /dev/sdc /iscsi/iqn.20...ge1/tpg1/aclscreate iqn.2019-10.com.example:demokey /iscsi/iqn.20...ge1/tpg1/lunscreate /backstores/blocks/demo storage object or path not validexit客户端#安装客户端软件yuminstall-yiscsi-initiator-utils.x86_64#修改名称与服务端相同安全认证与访问控制vim/etc/iscsi/initiatorname.iscsi#修改格式类似于InitiatorNameiqn.2019-10.com.example:demokey#发现设备iscsiadm-mdiscovery-tsst-p192.168.88.142#登录设备iscsiadm-mnode-lsystemd管理服务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.servicemachine.slice虚拟机或容器进程QEMU/KVM 虚拟机每个切片默认获得相同的 CPU 时间份额CPUShares1024调度器在它们之间公平分配 CPU 资源。查看服务状态systemctl statussystemctl status sshd.service输出字段含义状态说明loaded单元配置文件已成功加载并处理active (running)服务正在运行有一个或多个持续进程active (exited)服务已完成一次性配置任务如 sysctlactive (waiting)服务正在运行但等待某个事件如 network-onlineinactive服务未运行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# 查看所有单元含 inactivesystemctl list-units--typeservice# 仅查看服务单元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核心概念区域Zonesfirewalld 通过“区域”来管理不同网络的信任级别。每个网络接口可以绑定到一个区域不同区域有不同的默认规则。区域名称默认信任级别典型用途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非军事区DMZblock 拒绝所有入站连接高安全隔离环境drop 丢弃所有入站连接无回复最高安全级别安装iptablesyum install -y iptables iptables-services systemctl disable --now firewalld常用命令1、 查看防火墙状态firewall-cmd--statefirewall-cmd --list-all2、放行服务firewall-cmd --add-servicehttp--permanentfirewall-cmd --add-servicehttps--permanent3、放行端口firewall-cmd --add-port8080/tcp--permanentfirewall-cmd --add-port3306/tcp--permanent4、查看当前区域firewall-cmd --get-default-zone firewall-cmd --get-active-zones5、重新加载配置firewall-cmd--reload6、查询规则是否已添加firewall-cmd --query-servicehttp firewall-cmd --query-port8080/tcp7、移除规则firewall-cmd --remove-servicehttp--permanentfirewall-cmd --remove-port8080/tcp--permanentWeb 服务配置指南Apache 基础配置安装 Apacheyuminstall-yhttpd启动并设置开机自启systemctl start httpd systemctlenablehttpd主配置文件位置主配置文件/etc/httpd/conf/httpd.conf子配置目录/etc/httpd/conf.d/网站根目录/var/www/html/CGI 脚本目录/var/www/cgi-bin/日志目录/var/log/httpd/创建测试页面echoHello, World!/var/www/html/index.htmlCGI 脚本配置创建 CGI 程序位于 /var/www/cgi-bin/ 目录cd/var/www/cgi-bin/vimtest.cgi脚本内容#!/bin/bashechoContent-type:text/htmlechols-l/设置可执行权限chmodax test.cgi访问测试http://server1/cgi-bin/test.cgiSELinux 对 Web 服务的影响1、 SELinux 布尔值BooleansSELinux 策略可以通过启用或禁用布尔值来动态调整。这些布尔值允许在无需修改策略文件的情况下改变 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# 查看特定布尔值setseboolhttpd_enable_cgion# 临时启用重启后丢失setsebool-Phttpd_enable_cgion# 永久启用-P 持久化3、主机访问控制vi/etc/httpd/conf/httpd.conf示例只允许 192.168.88.142 访问 /var/www/html/admin 目录Directory/var/www/html/adminRequire all granted Order deny,allow deny from all allow from192.168.88.142/Directory用户认证Basic Authentication为目录设置用户名密码认证创建密码文件htpasswd-c/etc/httpd/conf/httpaswd admin配置目录认证vi/etc/httpd/conf/httpd.confDirectory/var/www/html/adminAuthUserFile /etc/httpd/conf/httpaswd AuthNameInput user name and passwordAuthType basic Require user admin# Require valid-user # 如果密码文件中有多个用户可使用此选项放行所有合法用户/Directory重启 Apachesystemctl restart httpd访问测试浏览器访问 http://server1/admin/会弹出登录框输入用户名 admin 和对应密码即可。