Linux 系统安装、故障排除、权限管理与安全配置指南
Linux 系统管理的核心知识,涵盖 Kickstart 自动化安装流程、系统故障排除方法(单用户模式、救援模式)、sudo 权限配置与管理、加密基础及算法(对称/非对称/PKI)、OpenSSH 密钥认证、DNS 域名解析与 BIND 配置、DHCP 动态分配以及 HTTP 协议与 Apache Web 服务器部署。内容包含详细命令示例、配置文件说明及安全最佳实践,适用于系统管理员进行环境搭建与维护。

Linux 系统管理的核心知识,涵盖 Kickstart 自动化安装流程、系统故障排除方法(单用户模式、救援模式)、sudo 权限配置与管理、加密基础及算法(对称/非对称/PKI)、OpenSSH 密钥认证、DNS 域名解析与 BIND 配置、DHCP 动态分配以及 HTTP 协议与 Apache Web 服务器部署。内容包含详细命令示例、配置文件说明及安全最佳实践,适用于系统管理员进行环境搭建与维护。

| 主题 | 核心概念 | 一句话 |
|---|---|---|
| 系统安装 | Anaconda、Kickstart | Anaconda 是 RHEL/Fedora 安装程序;Kickstart 用 ks 文件实现无人值守安装 |
| 故障排除 | 单用户模式、救援模式、MBR/grub 修复 | 确定特征→重现→收集信息→从简单入手、一次一种、先备份 |
| 权限管理 | sudo、/etc/sudoers | 让普通用户以指定身份执行命令;条目格式 who which_hosts=(runas) TAG:command |
| 加密 | 对称、单向、非对称 | 对称快但密钥分发难;单向做摘要;非对称做身份认证与密钥交换 |
| PKI/SSL | CA、x509、OpenSSL | CA 签发证书;SSL/TLS 在应用层下加密;OpenSSL 实现工具 |
| SSH | OpenSSH、密钥认证、scp/sftp | 加密远程登录;密钥认证免密;scp 传文件 |
| DNS | 域名解析、递归/迭代、主/从/缓存 | FQDN↔IP;stub resolver 查 /etc/hosts 再问 DNS;BIND/named 实现 |
| 资源记录 | SOA、NS、A、MX、PTR、CNAME | DNS 数据库条目;SOA 定义区域属性;NS 指定名称服务器;A 做正向解析 |
| DHCP | 动态主机配置、67/68 UDP | DISCOVER→OFFER→REQUEST→ACK 四步获取 IP/掩码/网关/DNS |
| HTTP | 超文本传输、请求/响应报文 | GET/POST 方法;状态码 2xx 成功、3xx 重定向、4xx 客户端错、5xx 服务端错 |
| httpd | Apache、MPM、虚拟主机 | prefork/worker/event 三种并发模型;基于 IP/端口/域名的虚拟主机 |
| CGI | 通用网关接口 | httpd 调用外部程序生成动态内容;FastCGI 为改进版 |
| HTTPS | HTTP over SSL/TLS | 443/tcp;mod_ssl;需证书与私钥 |
Anaconda 是 Red Hat Linux 和 Fedora 的安装管理程序,用 Python 与 C 编写,提供:
可用于自动安装配置,最小化人工参与;支持 RHEL、Fedora 等多种系统。
Kickstart 用于完成无人值守自动化安装,由一份 ks 配置文件驱动。
| 部分 | 起始标记 | 内容 |
|---|---|---|
| 命令段 | (无特殊标记,文件开头) | 必备命令(keyboard/lang/timezone/rootpw/auth/bootloader)+ 可选命令(autopart/clearpart/network/firewall 等) |
| 软件包段 | %packages | 列出要安装的包或组,如 @base、httpd |
| 脚本段 | %pre、%post | %pre 在安装前执行(可用工具有限);%post 在安装后执行(常用于配置) |
为什么需要 Kickstart?
大批量装机时,交互式安装每台都要选语言、分区、软件包,既慢又易出错。Kickstart 把所有选项写进 ks 文件,通过网络或光盘提供;安装程序按文件执行,实现无人值守,便于机房批量部署和环境一致性。
| 命令 | 说明 | 示例 |
|---|---|---|
| keyboard | 键盘布局 | keyboard us |
| lang | 语言 | lang en_US 或 zh_CN;locale -a 可查所有支持语言 |
| timezone | 时区 | timezone [--utc] Asia/Shanghai;timeconfig 可查时区,乱码可 export LANG=C |
| rootpw | root 密码 | rootpw --iscrypted <加密串> 或 rootpw yourpassword |
| auth / authconfig | 认证方式 | 如 authconfig --enableshadow --passalgo=sha512 |
| bootloader | 引导程序 | bootloader --location=mbr --append="hdd=ide-scsi ide=nodma" |
| 命令 | 说明 | 示例/选项 |
|---|---|---|
| autopart | 自动分区 | 按默认策略分区 |
| clearpart | 清除分区 | --all(全清)、--linux(仅 Linux 分区)、--none(默认,用空闲空间)、--initlabel(无分区表时初始化);慎用,指错可致命 |
| ignoredisk | 忽略/仅用某盘 | ignoredisk --drives=sdb,sdc 或 --only-use=sda |
| driverdisk | 驱动盘位置 | driverdisk --source=http://path/to/dd.img 或 nfs:host:/path |
| firewall | 防火墙 | firewall --enabled/--disabled;--trust 可跟 --ssh、--http、--ftp 等 |
| firstboot | 首次启动向导 | firstboot --disabled 或 --enabled |
| halt | 装完后关机 | 无参数即关机 |
| graphical / text | 安装界面 | graphical(默认,图形)或 text(纯文本) |
| install / upgrade | 安装或升级 | install;url --url http://server/dir 或 ftp://user:pass@server/dir |
| interactive | 交互模式 | 与自动化矛盾,一般不用 |
| part | 磁盘分区 | 定义具体分区,如 part / --fstype=ext4 --size=10240 |
| network | 网络配置 | network --bootproto=dhcp 或 --bootproto=static --ip=... --netmask=... --gateway=... --nameserver=... 可加 --device=eth0 |
| selinux | SELinux | selinux --permissive 或 --disabled |
| skipx | 跳过 X 配置 | 不装图形界面时用 |
ks 文件位置(通过 ks= 指定):
| 位置 | 示例 |
|---|---|
| HTTP | ks=http://server/path/ks.cfg |
| FTP | ks=ftp://user:pass@server/path/ks.cfg |
| NFS | ks=nfs:server:/path/ks.cfg |
| 光盘 | ks=cdrom:/ks.cfg |
| 硬盘 | ks=hd:sda1:/ks.cfg |
| 软盘 | ks=floppy:/ks.cfg |
| 本地文件 | ks=file:/path/ks.cfg |
| 命令 | 说明 |
|---|---|
| askmethod | 手动选择安装方式 |
| dd= | 指定驱动盘 |
| ip= / netmask= / gateway= / dns= | 配置网络(如 dns=8.8.8.8,8.8.4.4) |
| ks= | 指定 ks 文件位置(见上表) |
| ksdevice= | 指定网卡(如 ksdevice=eth0) |
| nonet | 不启用网络 |
| noprobe | 不探测硬件(特殊硬件导致安装失败时可试) |
| rescue | 进入救援模式 |
制作可引导 ISO:
mkisofs -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o boot.iso iso/
注:原文提到用 Kickstart 自动安装 RHEL 6.5 时提示找不到 cdrom 驱动,改用 PXE 方式安装。
对比:Kickstart 安装方式(ks 文件来源)
| 方式 | 适用场景 | 优缺点 |
|---|---|---|
| HTTP/FTP | 批量网络安装 | 快速、集中管理;需网络与 HTTP/FTP 服务器 |
| NFS | 内网批量安装 | 适合 Linux 环境;需 NFS 服务器 |
| 光盘 | 单机或小批量 | 无需网络;速度慢、不便更新 |
| 硬盘/U 盘 | 便携安装 | 灵活;需预先拷贝 ks 文件到设备 |
| PXE | 大规模网络部署 | 无需光盘/U 盘,全自动;需 DHCP + TFTP + PXE 服务器 |
对比:graphical 与 text 安装
| 对比项 | graphical(图形) | text(文本) |
|---|---|---|
| 界面 | PyGTK 图形界面 | 纯文本菜单 |
| 资源 | 占内存稍多 | 占用少 |
| 适用 | 桌面、有显示器 | 服务器、远程 console、低配机器 |
/var/log/messages、dmesg)、命令(lsmod、lspci 等)。原则:
/etc/fstab.bak、dd if=/dev/sda of=/root/mbr.back)为什么故障排除强调'先备份、一次一种'?
改配置或重装组件有风险,若一次改多处,出问题后难以判断是哪一个改动导致的;先备份能在改坏时快速还原。一次只尝试一种修复方式,便于确定'是这一步解决了问题',方便总结和文档化。
| 故障类型 | 典型现象 |
|---|---|
| 管理员密码忘记 | 无法登录 |
| 系统无法正常启动 | MBR/grub 损坏、grub 配置文件丢失、stage2 等文件丢失 |
| 系统初始化故障 | 某文件系统无法挂载、驱动不兼容、kernel panic |
| 服务故障 | 某服务启动失败导致整个系统卡住(如 sendmail 时间戳检查失败) |
| 图形界面故障 | X 无法启动 |
| 用户无法登录 | bash 程序损坏 |
| 命令无法运行 | PATH 被改错、库文件缺失 |
| 编译无法继续 | 开发环境缺基本组件 |
| 默认级别误设为 0 或 6 | 启动即关机或重启 |
| rc.local 脚本错误 | 启动时卡住或报错 |
POST BIOS 启动设备顺序 MBR bootloader Kernel initrd ROOTFS /sbin/init /etc/inittab
排障时按此顺序从前往后排查。
对比:常见故障排除方式
| 故障类型 | 首选方式 | 备选方式 | 工具 |
|---|---|---|---|
| 密码忘记 | 单用户模式 | - | grub 编辑 + passwd |
| MBR/grub 损坏 | 救援模式 | 另一台机器挂盘修 | grub 命令行、dd |
| grub.conf 丢失 | grub> 手动引导 | 救援模式重建 | grub 命令、vi |
| bash 等关键文件损坏 | 救援模式 | - | rpm --replacepkgs |
| PATH 改错 | 新终端登录 | 单用户模式 | export PATH |
| 服务启动卡住 | 单用户关服务 | 交互模式(按 I) | chkconfig、service |
| 内核 panic | 检查 grub root= / initrd | 换内核 | grub 编辑、dmesg |
解决:进入单用户模式修改密码。
**single**(或 1、s、S)。passwd root 重置密码。init 6 重启。备份与模拟破坏:
# 备份 MBR(前 512 字节)
dd if=/dev/sda of=/root/mbr.backup count=1 bs=512
# 模拟破坏 MBR(前 200 字节)
dd if=/dev/zero of=/dev/sda count=1 bs=200
sync
shutdown -r now
修复方法:使用救援模式(步骤详细)
boot> 提示符输入 linux rescue。grub 进入 grub 命令行。find (hd0,0)(或按 TAB 列设备)查找内核在哪个磁盘/分区。root (hd0,0)(与 find 结果一致)。setup (hd0) 把 stage1 写入 MBR。quit 退出 grub。sync 同步磁盘。reboot 重启,成功。现象:启动后显示 grub> 提示符。
手动引导步骤:
find (hd0,0)(或 TAB 列设备)。root (hd0,0)(假设 /boot 在 hd0,0)。kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/VolGroup00/LogVol00(TAB 补全)。initrd /initrd-2.6.18-308.el5.img(TAB 补全)。boot 启动。/boot/grub/grub.conf:default=0
timeout=5
title Admin Team
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/VolGroup00/LogVol00 quiet
initrd /initrd-2.6.18-308.el5.img
解决:从同版本或 /usr/share/grub/i386-pc/(32 位)或对应 64 位目录拷贝回 /boot/grub/。
/etc/fstab、设备是否存在、文件系统类型。现象:启动即关机或重启。
解决:进入单用户模式(方法同故障一),编辑 /etc/inittab,将 id:0:initdefault: 或 id:6:initdefault: 改为 id:3:initdefault: 或 id:5:initdefault:。
现象:关机都关不掉,无法进入单用户(因 shell 是 bash)。
解决:进入救援模式,重装 bash。
boot> linux rescue(步骤同故障二)。sync → reboot。重装 bash(根已挂在 /mnt/sysimage):
rpm -ivh --replacepkgs --root /mnt/sysimage bash-3.2-xxx.rpm
进入救援系统后,挂载光盘:
mkdir /media
mount /dev/hdc /media # cdrom 指向 /dev/hdc
cd /media/Server
ls|grep bash
现象:执行 export PATH=/data/bin 后,ls 等命令不可用。
解决:
export PATH=/bin:/sbin:/usr/bin:/usr/sbin;echo $PATH 可查看。解决:进入单用户模式,从备份或同版本系统拷回。
现象:启动时卡在 sendmail 服务。
解决:
chkconfig sendmail off)。原因:开发环境缺基本组件(如 gcc、make、头文件)。
解决:yum groupinstall "Development Tools" "Development Libraries" -y。
作为管理员应阶段性备份 /etc 下配置,并用版本控制工具(svn 或 git)管理,可将配置恢复到过去某一时刻。
对比:单用户模式与救援模式
| 对比项 | 单用户模式(single) | 救援模式(linux rescue) |
|---|---|---|
| 进入方式 | grub kernel 行尾加 single | 光盘启动,boot 输入 linux rescue |
| 使用的系统 | 本机根文件系统(只读后 remount 可写) | 光盘上的小 Linux,本机根需手动挂到 /mnt/sysimage |
| 典型用途 | 改 root 密码、改 inittab、关问题服务 | MBR 重写、grub 重装、bash 等关键文件损坏 |
| 网络 | 可选配置 | 可选配置,常用于从网络拉包 |
| 能否用本机命令 | 是(本机 /bin、/sbin) | 否(用光盘的,需 chroot 到 /mnt/sysimage 才能用本机命令) |
能 不能 显示 grub> 完全不显示
🚨 故障发生 能进系统? 单用户模式 改密码/配置
grub 能显示? grub 命令行 手动引导
救援模式 MBR/grub 重装
✅ 修复
sudo:让某用户以另一用户身份(通常 root)执行指定命令。
/etc/sudoers,建议用 visudo 编辑(会做语法检查)。一条 sudo 条目格式:
who which_hosts=(runas) TAG: command
| 字段 | 含义 | 可写成 |
|---|---|---|
| who | 用户 | 用户名、%组名、User_Alias |
| which_hosts | 主机 | 主机名、IP、网段、Host_Alias |
| runas | 以谁身份 | 用户名、%组名、Runas_Alias |
| TAG | 标签 | NOPASSWD(此后命令免密)、PASSWD(需密码) |
| command | 命令 | 绝对路径、Cmnd_Alias |
示例:
hadoop ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/usermod
表示用户 hadoop 在任何主机上可以无密码以 root 执行 useradd,但执行 usermod 需输密码。
别名规则:必须全大写,且只能由大写字母组成。
| 别名类型 | 可包含 |
|---|---|
| User_Alias | 用户名、%组名、其他用户别名 |
| Host_Alias | 主机名、IP、网段、其他主机别名 |
| Runas_Alias | 用户名、%组名、其他 Runas 别名 |
| Cmnd_Alias | 命令绝对路径、目录(即该目录下所有命令)、其他命令别名 |
示例:
User_Alias USERADMIN = hadoop, %hadoop, %useradmin
Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, !/usr/bin/passwd root, /usr/bin/passwd [A-Za-z]*
USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
注意:
**!** 表示'不允许',如 !/usr/bin/passwd root 表示不能 passwd root;取反优先级最高。**[A-Za-z]*** 表示命令后必须跟字母参数(如 passwd tom 可以,passwd 单独不行)。| 命令 | 作用 |
|---|---|
sudo COMMAND | 以授权身份执行命令 |
sudo -l | 列出当前用户可执行的 sudo 命令 |
sudo -k | 清除缓存的认证信息(下次 sudo 需输密码) |
tail /var/log/secure 可查看 sudo 使用记录;tail /var/log/messages 也有相关记录。为什么用 sudo 而不是直接给 root 密码?
root 密码给多人共用时,谁做了什么无法区分,且密码易泄露。sudo 可以按用户、按主机、按命令精细授权,且所有执行记录在日志里,便于审计;需要时收回某人的 sudo 权限即可,不用改 root 密码。
为什么别名必须全大写?
sudoers 语法规定:为与真实用户名、主机名区分,别名被规定为必须全大写,这样解析时不会与普通用户名混淆。
对比:直接给 root 密码 vs sudo
| 对比项 | 直接给 root 密码 | sudo |
|---|---|---|
| 权限粒度 | 全部 root 权限 | 按命令、按主机精细控制 |
| 审计 | 无法区分谁做的 | 日志记录每条 sudo 操作 |
| 安全 | 密码泄露影响大 | 收回某人权限即可,不用改密码 |
| 学习曲线 | 简单 | 需学 sudoers 语法 |
| 要素 | 含义 | 实现方式 |
|---|---|---|
| 机密性 | 数据内容不被窃取 | 对称加密、非对称加密 |
| 完整性 | 数据内容不被篡改 | 单向加密(摘要)+ 签名 |
| 身份验证 | 确定通信双方身份 | 非对称加密(数字签名)、CA 证书 |
| 类型 | 密钥 | 速度 | 典型算法 | 主要用途 |
|---|---|---|---|---|
| 对称加密 | 加解密同一密钥 | 快 | DES(56bit)、3DES、AES(128/192/256/512)、Blowfish | 大量数据加密 |
| 单向加密 | 无密钥(摘要) | 中 | MD4、MD5、SHA1、SHA256/384/512、CRC-32 | 完整性校验、密码存储 |
| 非对称加密 | 公钥/私钥对 | 慢 | RSA(加密 + 签名)、DSA(签名)、ElGamal | 身份认证、密钥交换、签名 |
对称加密:
单向加密:
非对称加密:
为什么非对称加密一般不直接加密整份数据?
非对称加密运算慢、对数据长度有限制。实际做法多是:用非对称加密做身份认证和密钥交换(例如用对方公钥加密一个随机数,对方用私钥解密得到后作为对称密钥),大量数据则用对称加密,兼顾安全与性能。HTTPS、SSH 都采用这种组合。
IKE(Internet Key Exchange):用 Diffie-Hellman 协议在不安全信道协商共享密钥。
原理简述(原文):
g^y % p;A 收到后计算 (g^y % p)^x = g^(xy) % p。g^x % p;B 收到后计算 (g^x % p)^y = g^(xy) % p。g^(xy) % p 作为共享密钥。问题:解决了密钥交换,但身份认证问题仍存在(中间人攻击)。
PKI(Public Key Infrastructure,公钥基础设施):以 CA(Certificate Authority,证书颁发机构) 为核心,管理密钥与证书。
CA 原理:
x509 证书(PKI 标准)包含:
PKI 实现:
至此:机密性(对称加密)、完整性(摘要 + 签名)、身份验证(证书 + CA)三者均得到保证。
位置:在 TCP/IP 模型的应用层与传输层之间附加一层,为 HTTP、FTP、SMTP 等明文协议提供加密。
应用:HTTPS(HTTP over SSL/TLS)、FTPS、SMTPS 等。
| 层 | 作用 |
|---|---|
| SSL 记录协议 | 建立在可靠传输协议(TCP)上,为高层提供数据封装、压缩、加密 |
| SSL 握手协议 | 建立在 SSL 记录协议之上,用于传输前身份验证、协商加密算法、交换加密密钥 |
服务器客户端服务器客户端
注意(原文):SSL 会话是基于 IP 地址建立的,一个 IP 上只能有一个 SSL 会话,即一个 IP 只能有一个 HTTPS 服务器(可以是主机或虚拟主机之一)。
OpenSSL:Linux 上实现 SSL 协议的开源工具。
三部分:
| 组件 | 说明 |
|---|---|
| libcrypto | 加密库 |
| libssl | TLS/SSL 实现库(基于会话,实现身份认证、数据机密性、会话完整性) |
| openssl | 多用途命令行工具(加密/解密、摘要、生成密钥、创建私有 CA) |
| 用途 | 命令示例 |
|---|---|
| 测试加密性能 | openssl speed |
| 加密文件 | openssl enc -des3 -salt -a -in ping.sh -out ping.enc |
| 解密文件 | openssl enc -des3 -d -salt -a -in ping.enc -out ping.sh |
| MD5 摘要 | openssl dgst -md5 file 或系统 md5sum file |
| SHA1 摘要 | sha1sum file |
| 生成密码哈希 | openssl passwd -1 或 openssl passwd -1 -salt .uJLV8x0(盐加密) |
| 获取随机数 | openssl rand -base64 100 |
| 生成私钥 | (umask 077; openssl genrsa -out server.key 2048) 或 openssl genrsa 2048 > service.key |
| 从私钥提取公钥 | openssl rsa -in server.key -pubout |
| 自签名证书 | openssl req -new -x509 -key server.key -out server.crt -days 365 |
| 查看证书 | openssl x509 -text -in server.crt |
证书配置目录(原文):/etc/pki/tls/openssl.cnf
对比:SSL/TLS 与 SSH
| 对比项 | SSL/TLS | SSH |
|---|---|---|
| 主要用途 | 为应用层协议(HTTP/FTP/SMTP)加密 | 加密远程登录与文件传输 |
| 典型应用 | HTTPS、FTPS | ssh、scp、sftp |
| 证书 | 需 CA 签发的 x509 证书 | 主机密钥(自签名),可选用户密钥 |
| 端口 | 443(HTTPS)、990(FTPS) | 22 |
OpenSSH:SSH(Secure SHell)协议的免费开源实现,用于加密远程控制与文件传输,取代 telnet、rcp、ftp、rlogin、rsh 等不安全的明文传输工具。
版本:
认证方式:
安装包:rpm -qa | grep ssh
查看版本:ssh -V
配置文件:
| 文件 | 说明 |
|---|---|
/etc/ssh/ssh_config | 客户端配置 |
/etc/ssh/sshd_config | 服务端配置 |
主机密钥(在 /etc/ssh/):
| 密钥文件 | 说明 |
|---|---|
ssh_host_rsa_key / .pub | RSA 密钥(V2) |
ssh_host_dsa_key / .pub | DSA 密钥(V2) |
ssh_host_key / .pub | V1 密钥(不推荐) |
moduli | 密钥交换和认证相关信息 |
客户端保存的主机指纹:~/.ssh/known_hosts(权限 644)
| 配置项 | 默认值 | 说明 |
|---|---|---|
Port | 22 | 监听端口(建议改非默认) |
AddressFamily | any | 地址族:any、inet(IPv4)、inet6 |
Protocol | 2 | 协议版本(不要用 1) |
KeyRegenerationInterval | 1h | 密钥更换周期 |
ServerKeyBits | 1024 | 密钥长度 |
LoginGraceTime | 2m | 登录超时 |
PermitRootLogin | yes | 是否允许 root 直接登录(建议关闭) |
MaxAuthTries | 6 | 试错次数 |
PrintLastLog | yes | 打印上次登录信息(建议不暴露) |
Subsystem sftp | /usr/libexec/openssh/sftp-server | sftp 子系统(sftp 基于 ssh;ftps 基于 ssl) |
1. 生成密钥对(客户端)
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N 'password'
选项:
-t {rsa|dsa}:指定算法-f /path/to/keyfile:保存位置(默认 ~/.ssh/id_rsa)-N 'password':指定密码(可为空)2. 将公钥传到服务器
方法一:用 ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
方法二:手动 scp 后追加
scp ~/.ssh/id_rsa.pub user@host:/tmp/
ssh user@host cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. 测试登录
ssh user@host
若出现 'Agent admitted failure to sign using the key',执行 ssh-add。
| 用法 | 说明 |
|---|---|
ssh user@host | 登录远程主机 |
ssh -l user host | 同上 |
ssh user@host 'command' | 不登录,只执行命令并返回结果 |
ssh -X user@host | 启用 X11 转发(可运行远程图形程序) |
ssh -2 -p port user@host | 指定端口 |
scp:基于 SSH 的远程复制命令。
scp[options] SRC DEST
| 选项 | 说明 |
|---|---|
-r | 递归复制目录 |
-p | 保持源文件元数据(mode、timestamp) |
-q | 静默模式 |
-P PORT | 指定远程端口 |
示例:
# 从远程拷到本地
scp [email protected]:/etc/fstab ./
# 从本地拷到远程
scp fstab [email protected]:/root/
# 指定端口
scp -P 2222 file user@host:/path/
sftp:交互式文件传输。
sftp[user@]host
对比:sftp 与 ftps
| 对比项 | sftp | ftps |
|---|---|---|
| 基于 | SSH(22/tcp) | SSL/TLS(21/tcp + 数据端口) |
| 加密 | SSH 加密 | SSL/TLS 加密 |
| 认证 | SSH 认证(密钥或密码) | FTP 认证 + SSL 证书 |
对比:telnet/rsh 与 SSH
| 对比项 | telnet/rcp/rlogin/rsh | SSH(OpenSSH) |
|---|---|---|
| 传输 | 明文 | 加密 |
| 密码 | 明文传输 | 加密传输 |
| 主机认证 | 无 | 有(主机密钥) |
| 现状 | 已淘汰 | 主流 |
PermitRootLogin no)。Protocol 2)。DNS(Domain Name Service):域名解析服务,实现 FQDN↔IP 双向转换。
www.example.com.(末尾有点)。example.com 是域;www.example.com 是主机名(FQDN)。名称解析框架:nsswitch
/etc/nsswitch.confhosts: files dns
/etc/hostsstub resolver(名称解析器):本地程序,按 nsswitch 配置查询。
| 机构 | 职责 |
|---|---|
| IANA | 互联网域名与 IP 分配机构 |
| ICANN | 民间域名分配机构,管理顶级域(TLD) |
TLD(顶级域):
| 类型 | 示例 |
|---|---|
| 组织域 | .com、.org、.net、.cc |
| 国家域 | .cn、.tw、.hk、.jp、.ir、.iq |
| 反向域 | IP→FQDN(in-addr.arpa) |
解析类型:
| 类型 | 方向 |
|---|---|
| 正向解析 | FQDN → IP |
| 反向解析 | IP → FQDN(不是同一数据库) |
查询类型:
| 类型 | 说明 |
|---|---|
| 递归 | 客户端只发一次请求,由 DNS 服务器一路查到底并返回结果 |
| 迭代 | DNS 服务器只返回'下一跳'(参考答案),由请求方多次请求 |
实际互联网:本地 DNS 对客户端提供递归,对外部 DNS 用迭代。
| 类型 | 说明 |
|---|---|
| 主 DNS 服务器 | 数据可修改,权威答案 |
| 辅助(从)DNS 服务器 | 从主服务器同步数据(按 serial number、refresh、retry、expire、TTL) |
| 缓存 DNS 服务器 | 不负责区域,只缓存查询结果(非权威答案) |
| 转发器 | 将查询转发给其他 DNS |
权威答案 vs 非权威答案:
| 类型 | 说明 | TTL |
|---|---|---|
| 权威答案 | 来自该区域的主/从服务器 | 肯定答案、否定答案均有 TTL |
| 非权威答案 | 来自缓存 | 会过期,超时后重新查询 |
负载均衡:一个域名可对应多个 IP,DNS 可轮询返回不同 IP。
生活例子:DNS 像

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online