Ubuntu 22.04 的初始服务器配置

·

2 min read


https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04

介绍

当您初次搭建一个全新的 Ubuntu 22.04 服务器时,有一些关键的配置步骤需要在初始设定时完成。这些步骤将提升服务器的安全性与使用体验,并为您后续进行的各项工作打下坚实的基础。

Step 1 — Logging in as root

要进行服务器登陆,您需要服务器的公网 IP 地址。若您已设置 SSH 密钥做为身份验证方式,则还需要知道根用户的密码或私钥。

若您当前尚未与服务器建立连接,可以使用下面的指令作为 root 用户登陆。请将指令中的 your_server_ip 替换为您服务器的公网 IP 地址:

ssh root@your_server_ip

如果系统提示关于主机真实性的警告,请予以确认。若您的服务器采用密码验证,需要输入 root 用户的密码进行登录。如果您的 SSH 密钥设有口令,每次会话首次使用密钥时可能需要输入该口令。若您是首次利用密码方式登录服务器,也可能需要设置新的 root 用户密码。如果系统提示,根据屏幕上的说明来更改您的密码。

About root

在 Linux 环境下,root 用户是具备最高管理权限的用户。正因为 root 账户拥有极高的操作权限,建议不要常规性地使用它。即便是无意间,root 账户也可能造成极为严重的破坏。

接下来的步骤是创建一个权限较低的新用户账号作为日常操作的主体。稍后,我们还会指导您在需要执行高权限操作时,如何临时获取所需的权限。

Step 2 — Creating a New User

一旦您以 root 身份登录,便可以添加新的用户账号。此后,我们会使用这个新账号进行登录,避免直接使用 root

这里给出的示例是创建了一个名为 sammy 的用户,但您应该选一个您喜欢的用户名来代替它:

adduser sammy

系统将引导您回答几个问题,首先是设置账户的密码。

请设定一个复杂度较高的密码,并且您也可以选择性地填写任何其他额外的个人信息。这些信息并非强制要求,对于不想填写的部分,直接按 ENTER 键跳过即可。

Step 3 — Granting Administrative Privileges

您现在拥有了一个拥有普通权限的新用户账号。但是,您有时可能需要执行一些需要 root 权限的管理任务。

为了免去注销当前用户并以 root 账户重新登录的麻烦,您可以给您的普通用户账户赋予所谓的超级用户或 root 权限。开启这些权限后,您只需在命令前加入sudo这个词,就可以让普通用户以管理员身份执行命令了。

要为您的新用户开启这项权限,您必须将其添加到 sudo 组。在 Ubuntu 22.04 系统中,默认情况下 sudo 组的成员就能使用 sudo 命令。

请以 root 用户身份执行以下命令,来把您的新用户添加到 sudo 组(将命令中的 sammy 替换为您的新用户名):

usermod -aG sudo sammy

当您以普通用户身份登录时,只需在命令前加上 sudo,就可以以超级用户的权限执行这些命令了。

Step 4 — Setting Up a Firewall

您可以在 Ubuntu 22.04 服务器上使用 UFW (非活动输入输出) 防火墙来确保系统只允许连接到特定服务。您还可以通过这个工具来设置一个基础级别的防火墙。

💡
请注意:如果您的服务器托管在 DigitalOcean 上,您可以选择使用 DigitalOcean 提供的云防火墙服务,不必使用 UFW 防火墙。我们建议同时只启用一个防火墙,这样可以防止规则发生冲突,这种冲突可能会给调试带来困难。

应用程序可以在安装过程中将其配置文件注册到 UFW 中。这让您可以仅通过应用程序的名字来由 UFW 进行管理。例如,OpenSSH 服务——允许您连接服务器的服务——就有一个在 UFW 注册的配置文件。

通过输入以下命令,您可以查看已安装的 UFW 配置文件列表:

ufw app list
Output
Available applications:
  OpenSSH

您需要确保防火墙设置允许 SSH 连接,这样您将来能够顺利登录服务器。可以通过输入以下命令来实现这一点:

ufw allow OpenSSH

现在输入以下命令来启动防火墙:

ufw enable

输入 y 并回车以确认操作。要检查 SSH 连接是否仍被允许,您可以输入下面的命令:

ufw status
Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

目前,防火墙除了允许 SSH 连接外,正在屏蔽所有其他连接。当您安装或设置新的服务时,需要对防火墙规则进行调整,以便让新的数据流能够访问服务器。在我们的 “UFW 基础指南” 中,您可以了解一些关于 UFW 的常用操作。

Step 5 — Enabling External Access for Your Regular User

现在您已经设置了一个日常使用的普通用户账户,您还需要确保该账户支持直接 SSH 登录。

💡
请注意,在确认您能够用新用户账户登录并使用 sudo 命令之前,建议您继续保持以 root 用户身份在线。如果连接过程中出现任何问题,您可以作为 root 用户解决并做出必要修改。如果您使用的是 DigitalOcean Droplet 并遇到 root SSH 连接的问题,您可以通过恢复控制台重新获得对 Droplets 的控制

配置新用户的 SSH 访问权限,需要根据您的服务器的 root 账户是采用密码认证还是使用 SSH 密钥来决定。

假如 root 账户设置为密码验证方式

如果您是用密码登录您的 root 账户的话,说明您已经启用了 SSH 的密码认证。您可以开启一个新的终端会话,用下面的命令和您的新用户名通过 SSH 连接到新用户账户:

ssh sammy@your_server_ip

输入您普通用户账户的密码之后,您就可以成功登录了。请记住,当您需要执行需要管理权限的命令时,请在命令前加上 sudo,就像这样:

sudo command_to_run

每次会话中,当你首次使用 sudo 命令(以及以后规律性地),系统会提示你输入普通用户的密码。

为了提升服务器的安全等级,我们极力推荐用 SSH 密钥代替密码登陆。请参考我们的教程,了解如何在 Ubuntu 22.04 上配置 SSH 密钥认证。

假如 root 账户采用了 SSH 密钥认证

如果您通过 SSH 密钥登录 root 账户,SSH 的密码认证会被关闭。为了使用 SSH 密钥登录普通用户,您需要把本地公钥添加到新用户的 ~/.ssh/authorized_keys 文件里。

因为您的公钥已经在服务器 root 账户的 ~/.ssh/authorized_keys 文件里,您可以利用当前的会话来把该文件及其所在的目录结构复制到新用户账号。

rsync 命令来复制这些文件是最简便的方法,这能够确保文件的所有权和权限被正确复制,并且只需一个命令即可完成。使用该命令时,请确保根据您普通用户的名字修改指令中相应的部分:

💡
请注意,rsync 命令在处理末尾有斜杠和无斜杠的源路径和目标路径时行为会有所不同。在下面的 rsync 使用里,确保源路径(~/.ssh)不带末尾斜杠(确保不是写作 ~/.ssh/)。如果您在命令里不小心加上了末尾斜杠,rsync 将只复制 root 用户 ~/.ssh 目录里的文件到 sudo 用户的家目录,而不会按照原来的目录结构复制过去。这将导致文件处于不正确的位置,使得 SSH 无法识别和使用这些文件。
rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

现在,请在您的本地机器上打开一个新的终端会话,并使用 SSH 登录,输入您的新用户名:

sudo command_to_run

当您在每个会话中首次或之后定期使用 sudo 命令时,系统会提示您输入所需的普通用户密码。

下一步该做什么?

到目前为止,您的服务器已经建立了坚实的基础。您现在已经可以在服务器上安装任意您需要的软件了。