环境准备:服务器操作系统选型与基础配置
说实话,做远程运维这么多年,我踩过最大的坑就是操作系统选型没想清楚。记得刚带团队那会儿,有个项目急着上线,随手装了台 CentOS 6,结果半年后官方停止维护,安全补丁全得手动打……那叫一个狼狈。
今天咱们就把环境准备这块彻底聊透。你想想看,服务器就像房子的地基,地基歪了,后面装修得再漂亮也白搭。
操作系统选型:CentOS 还是 Ubuntu?
这个问题其实没有标准答案。我个人的习惯是:看团队、看生态、看长期维护。
| 对比维度 | CentOS(含 Rocky Linux / AlmaLinux) | Ubuntu Server(LTS 版本) |
|---|---|---|
| 稳定性 | 极高,RHEL 系血统,包管理成熟 | 高,每两年一个 LTS,支持 5-10 年 |
| 软件包新鲜度 | 偏保守,追求稳定 | 较新,Python/Node.js 等生态友好 |
| 运维工具兼容性 | Ansible、SaltStack 原生支持好 | Docker/K8s 社区首选,文档最全 |
| 学习曲线 | 中等,yum/dnf 命令体系 | 较低,apt 更直观,社区活跃 |
| 我的推荐场景 | 传统企业、金融、政府项目 | 互联网创业、DevOps、容器化场景 |
核心建议:如果你刚开始搭建远程运维平台,我个人更推荐 Ubuntu 20.04 LTS 或 22.04 LTS。原因很简单——社区文档最全,遇到问题 Google 一下基本都有答案。CentOS 8 已经停止维护了,现在要用就选 Rocky Linux 9 或 AlmaLinux 9。
基础网络配置:别让网络成为瓶颈
嗯,这里要注意。很多新手上来就配 IP,结果忘了检查网关和 DNS。我在项目中遇到过好几次:服务器装好了,SSH 连不上,排查半天发现是网关写错了。
咱们一步步来:
1. 查看当前网络接口
ip addr show
# 或者
ifconfig -a
我个人习惯用 ip 命令,它是新一代的网络工具,比 ifconfig 更强大。
2. 配置静态 IP(以 Ubuntu 为例)
Ubuntu 从 18.04 开始用 Netplan 管理网络。配置文件在 /etc/netplan/ 目录下:
# 编辑配置文件
sudo vim /etc/netplan/00-installer-config.yaml
# 内容示例
network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
# 应用配置
sudo netplan apply
小技巧:配置完记得用 ping 8.8.8.8 测试外网连通性,再用 ping baidu.com 测试 DNS 解析。两个都通,网络才算配好了。
3. 配置主机名与 hosts 文件
远程运维时,主机名清晰能省很多事。我习惯用「项目-角色-编号」的命名方式:
# 修改主机名
sudo hostnamectl set-hostname ops-master-01
# 编辑 hosts 文件
sudo vim /etc/hosts
# 添加内网解析
192.168.1.100 ops-master-01
192.168.1.101 ops-node-01
192.168.1.102 ops-node-02
SSH 服务安装与加固:远程运维的第一道防线
说白了,SSH 就是远程运维的「大门」。门锁不牢,黑客分分钟进来观光。我曾经见过一个客户,SSH 用的默认端口 22,密码还是 admin123……嗯,被入侵只是时间问题。
1. 安装 SSH 服务
大多数 Linux 发行版默认都装了 OpenSSH。如果没有,手动安装也很简单:
# Ubuntu / Debian
sudo apt update
sudo apt install openssh-server -y
# CentOS / Rocky Linux
sudo yum install openssh-server -y
安装后检查服务状态:
sudo systemctl status sshd
# 或者
sudo systemctl status ssh
2. 核心加固配置
配置文件在 /etc/ssh/sshd_config。我每次搭建新服务器,第一件事就是改这个文件:
# 1. 修改默认端口(避开 22,减少扫描攻击)
Port 22222
# 2. 禁止 root 直接登录
PermitRootLogin no
# 3. 使用密钥认证,关闭密码认证
PubkeyAuthentication yes
PasswordAuthentication no
# 4. 限制登录用户(只允许特定用户)
AllowUsers opsadmin deployer
# 5. 空闲超时断开(防止连接泄露)
ClientAliveInterval 300
ClientAliveCountMax 2
警告:修改端口和关闭密码认证前,务必先测试密钥登录是否正常!我曾经有一次手快,先关了密码认证,结果密钥没配好,自己把自己锁在服务器外面了……最后只能去机房接显示器救急。
3. 配置密钥登录
在本地生成密钥对,然后把公钥传到服务器:
# 本地生成密钥(建议用 ed25519,比 RSA 更安全高效)
ssh-keygen -t ed25519 -C "opsadmin@laptop"
# 上传公钥到服务器
ssh-copy-id -p 22222 opsadmin@192.168.1.100
# 或者手动复制
cat ~/.ssh/id_ed25519.pub | ssh -p 22222 opsadmin@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
4. 防火墙与 Fail2Ban
光加固 SSH 配置还不够,还得配合防火墙和暴力破解防护:
# 配置 UFW 防火墙(Ubuntu)
sudo ufw allow 22222/tcp
sudo ufw enable
# 安装 Fail2Ban(自动封禁暴力破解 IP)
sudo apt install fail2ban -y
sudo vim /etc/fail2ban/jail.local
# 添加 SSH 防护规则
[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
# 重启服务
sudo systemctl restart fail2ban
一句话总结:改端口 + 禁 root + 密钥登录 + Fail2Ban,这四步做完,你的 SSH 基本就固若金汤了。我管着 200 多台服务器,这套配置跑了三年没出过安全问题。
本章知识体系总览
下面这张图,是我梳理的环境准备核心逻辑。你可以把它当作一个检查清单:
你看,整个流程其实就三步:选对系统 → 配好网络 → 锁死 SSH。每一步都有坑,但按我上面说的做,基本不会出大问题。
个人经验:我建议你把这些配置写成 Ansible 剧本或者 Shell 脚本。以后新服务器上线,直接跑一遍脚本,10 分钟就能交付一台加固好的机器。效率提升不是一星半点。
公众号:蓝海资料掘金营,微信deep3321