之前我们讲了很多 Linux 服务器操作的命令,它们是管理服务器的基础。操作的时候,我们都是在一个图形化服务器(Server with GUI)内,很多时候系统都已经帮我们配置好了。然而,在实际的生产环境中,服务器都是不带桌面环境的,也就是说,我们必须和命令行打交道。相信很多初学者一听到“命令行”三个字,或者一看到黑咕隆咚的屏幕,蹦出一大堆根本看不懂的东西,就头皮发麻了。你并不孤单!就像初次进入一个新城市需要一份导航地图一样,掌握了关键步骤和基础逻辑,你会发现那片看似神秘的终端窗口,正是赋予你精确控制力和高效能力的起点。今天我们就仔细看看,服务器是否真的像天书一样很难配置。
前提条件……
首先,你需要先安装一台 Linux 服务器。网上有很多教程可以遵循,发行版官方也提供了丰富的文档。如果你不知道要安装哪个,可以参考下面的表格:
(请注意,CentOS 7 已经停止支持超过 1 年,存在很大的安全风险,强烈不建议使用)
对于第一次接触服务器环境的新手来说,首选 Ubuntu Server 22.04/24.04 LTS,次选 Debian 12/13 或 AlmaLinux/Rocky Linux 9+. CentOS Stream 由于更新迭代较快,不建议用于服务器环境。
对于 BSD 家族,由于多数命令和 Linux 不一样,这里不做考虑。
下面的内容,我们会用 Ubuntu Server 24.04 LTS 作为演示,但大多数操作在其他发行版上都是通用的。
SSH 登录
在生产环境下,正规且安全的做法是在另一个操作系统上通过 SSH 登录系统。这样做的目的是:
保证安全与高效:SSH(Secure Shell)协议对传输的所有数据(包括密码)进行强加密,从根本上杜绝了在图形界面中可能存在的直接物理接触、截屏或键盘记录风险,有助于最小化攻击面。同时,通过终端纯文本操作,避免了图形界面带来的不必要资源开销,指令执行更直接高效。
操作的便利性:在本地终端操作,我们可以方便地使用熟悉的本地编辑器(如 Vim、VS Code)编辑配置文件,并可利用本地的文档、浏览器和历史命令记录随时查找资料、复制粘贴复杂命令。同时,会话易于管理(多标签、保持连接),且所有操作日志都基于文本,便于记录、分享和团队协作。
这里我用的是 Termora,一款开源好用的 SSH 客户端,你也可以用 Wave Terminal 或 WindTerm 等其他 XShell 的开源平替,PowerShell 也行。至于 Putty,它缺少现代运维中必须要用到的文件传输功能,且其他功能十分有限,协议老旧,这里不做推荐。
不过在通过 SSH 登录之前,我们必须先获取服务器的 IP 地址。如果管理员没有告诉你,则必须先使用管理员给的账号密码登进去。
在系统启动界面,输入安装时设定的用户名(应该是小写)和密码,就可以进入系统了。
使用 ip addr show 获取当前服务器的 IP 地址:

可以看到,服务器的 IP 地址(在 ens32 的 inet 后面,lo 是回环地址,只会 ping 到自己)为 192.168.40.129.
我们记录下这个服务器地址,保持服务器开启(否则你登不进去),打开 SSH 客户端并输入刚才得到的信息(框出的为必填项):

可以测试一下连接。如果连接不上,可能是操作系统没有安装 OpenSSH 服务器,需要通过以下命令安装:
sudo apt update
sudo apt install openssh-server安装完成后,检查 ssh 的状态:

如果 xxx.service 后面是 "disabled",则使用下面的命令设置为开机自启动:
sudo systemctl enable ssh这样应该就能使用 SSH 客户端登录了:

配置软件源仓库
这里使用的是 TUNA 清华源,如果访问速度较慢,可以试着使用离你最近的镜像源。先进入软件源仓库所在的目录:

如果你的软件源目录显示为 /etc/apt/sources.list.d,说明该系统采用了新版 DEB822 格式的配置文件。反之,则为传统格式(位于 /etc/apt/sources.list 文件内)。(其实两种格式的操作方法是类似的)
以本例中采用的 DEB822 为例,先备份原软件源:
mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.old再打开 ubuntu.sources 进行编辑:


找到下面的 DEB822 格式,复制里面的内容并粘贴进文件中:

保存并退出。运行 sudo apt update 刷新一下软件包缓存:

最后的警告没有用,不需要管。现在我们就完成了软件源仓库的配置。
如果要查看软件源仓库,可以使用下面的命令:
sudo apt-cache policy(在 CentOS 系发行版中,你可能还需要安装 epel-release 源。)
放开防火墙端口
不同的发行版可能使用不同的防火墙,例如 iptables, firewall-cmd 和 ufw. 以本文使用的 Ubuntu 为例,默认可用的防火墙为 iptables 和 ufw. 这里我们使用配置更简单的 ufw 举例说明,至于更复杂的 iptables,我们在后面会专门出一章讲解。
请注意:某些教程内可能会让你关闭或删除防火墙,严格来说,这种做法无论是在生产环境还是在内网环境下都是绝对禁止的!因为网络上每时每刻都有很多恶意工具在扫描你的和公司的服务器,像这种没有任何防护的就会成为黑客眼中的一块大肥肉。
必须放开的端口如下:
要开放某个端口:
sudo ufw allow PORT/PROTOCOL
# PROTOCOL: typically 'tcp' (default) and 'udp'要删除某个端口的开放规则:
sudo ufw delete allow PORT/PROTOCOL
# You cannot delete a non-existing rule!!要设置默认策略(默认拒绝所有入站流量,允许所有出站流量):
sudo ufw default deny incoming
sudo ufw default allow outgoing完成改动后,记得启用防火墙(或者一开始就直接启用防火墙):
sudo ufw enable查看防火墙规则状态:
sudo ufw status
# Or add "verbose" for more information
设置 SELinux
SELinux(Security Enhanced Linux)是 Linux 中的一个额外的安全层(相较于上面的防火墙而言),其对权限的控制作用超过 root(可以防止篡改系统重要文件),你可以认为它就是 Linux 版的 Windows Defender. SELinux 的概念和配置非常复杂(官方给的 SELinux 文档比较难理解),这里只挑几个重要的说。
Ubuntu Server 默认是没有安装 SELinux 的(但是 CentOS 有),需要使用如下命令安装(最好先更新一下系统):
sudo apt install selinux-utils selinux-basics selinux-policy-default安装完成后,如果此时它的状态像这样:

说明它默认是被禁用的。需要打开 /etc/selinux/config 文件编辑默认模式:

改成 permissive 或 enforcing 都行,不过前者是开启但放行(允许授权用户修改系统重要文件),而后者是完全禁止(即使是 root 也不能做更改),但有概率会导致无法进入服务器。某些不可变 Linux 发行版就使用到了它。
修改完成后,必须先使用 sudo selinux-activate 激活,再重启系统,否则即使重启系统,更改也不会生效。
那么问题来了,如果我们只是临时修改一下,那还一定要每次都去改配置文件吗?
答案是否定的,SELinux 为了解决这一问题,提供了一个允许临时修改规则的命令 setenforce,重启后会失效:
setenforce 1
# 1 - enforcing
# 0 - permissive永久修改 SELinux 策略的话就需要修改配置文件。其实它的答案就在上面。
安装常用工具
一些常用的工具如下:
可以使用 apt 来安装它们。请注意,某些软件包可能缺失,需要自行从外部下载再传输。
备份/快照
这一部分比较简单,可以设置为计划任务。需要用到的软件包是 rsync.
例如,将本地 /home/$USER/Documents 目录下的文件同步到其他挂载点 /data:
sudo rsync -av /home/$USER/Documents/ /data/backups它执行的是增量备份,如果最后没有"/"则同步目录本身,反之则是里面的文件。
如果目标是远程服务器的话(请先尝试通信):
sudo rsync -av /data/backups/ [email protected]:/remote/backups/更多关于 rsync 的用法请参考这里:
至于虚拟机的话,直接拍摄快照就可以了。难度不是很大。