网站搜索

使用 Ubuntu 进行初始服务器设置


介绍

当您首次创建新的 Ubuntu 服务器时,应在初始设置过程中执行一些重要的配置步骤。这些步骤将提高服务器的安全性和可用性,并为后续操作打下坚实的基础。

本教程已在 Ubuntu 22.04 LTS、24.04 LTS 和 24.10 上验证。命令使用的默认软件包在当前临时版本以及即将发布的 25.x 版本中保持稳定,这些版本默认包含 apt、OpenSSH 和 UFW。

关键要点

  • 以 root 登录:了解如何首次安全地访问您的 Ubuntu 服务器。
  • 创建非管理员用户:添加一个具有 sudo 权限的普通用户账户,以降低日常使用 root 帐户的安全风险。
  • 设置 SSH 密钥认证:配置 SSH 密钥以实现安全的免密码登录,并将你的公钥复制到新用户。
  • 使用 UFW 配置防火墙:启用并测试简易防火墙(UFW)以限制访问,同时确保保持 SSH 开启以防被锁定。
  • 在退出 root 之前验证访问权限:在关闭 root 会话之前,确认您的新用户可以使用 sudo 并通过 SSH 连接,以避免被锁定在外。
  • 最佳实践适用于多种环境:这些初始步骤适用于云虚拟机、Droplets、VPS 和裸金属服务器。

使用 Linux-Console.net 应用平台从 GitHub 部署您的应用程序。让 Linux-Console.net 专注于扩展您的应用。

使用 Ubuntu 进行初始服务器设置

  1. 以 root 身份登录
  2. 创建新用户
  3. 授予管理员权限
  4. 设置防火墙
  5. 为您的常规用户启用外部访问

步骤 1 - 以 root 用户登录

要登录到您的服务器,您需要知道您的服务器公共 IP 地址。如果您为认证安装了 SSH 密钥,还需要 root 用户账户的密码或私钥。如果您尚未登录到服务器,可以参考我们的指南《如何使用 SSH 连接到 Droplets》,该指南详细介绍了此过程。

如果您当前未连接到服务器,请使用以下命令以 root 用户身份登录。将命令中高亮的 your_server_ip 部分替换为您的服务器公网 IP 地址:

ssh root@your_server_ip

如果出现关于主机真实性的警告,请接受它。如果您的服务器使用密码认证,请提供您的root密码以登录。如果您使用的 SSH 密钥有密码保护,可能需要在每个会话首次使用密钥时输入密码。如果这是您第一次使用密码登录服务器,您可能还需要更改root密码。如果收到提示,请按照说明更改密码。

关于根

root 用户是 Linux 环境中的管理用户,拥有高级权限。由于 root 账户的权限较高,因此不建议您经常使用它。root 账户甚至可能无意中造成非常破坏性的更改。

下一步是设置一个权限较低的新用户账户,用于日常使用。稍后,我们将向你展示如何在需要时临时获得更高的权限。

步骤 2 - 创建新用户

一旦你以 root 登录,你就可以添加新的用户账户。以后,我们将使用这个新账户登录,而不是 root。

这个示例创建了一个名为 sammy 的新用户,但你应该将其替换为你喜欢的用户名:

adduser sammy

您将被问到几个问题,从账户密码开始。

请输入一个强密码,并可选择填写任何其他信息。这些信息不是必填项,您可以在任何想跳过的字段中按ENTER。

步骤3 - 授予管理员权限

现在你有了一个具有普通账户权限的新用户账户。不过,你有时需要以 root 用户身份执行管理任务。

为了避免注销常规用户并使用 root 账户重新登录,您可以为用户的常规账户设置所谓的 超级用户 或 root 权限。这些权限将允许您的普通用户通过在命令前添加 sudo 来以管理员权限运行命令。

要将这些权限添加到您的新用户,您需要将该用户添加到 sudo 系统组。默认情况下,在 Ubuntu 上,属于 sudo 组的用户被允许使用 sudo 命令。

作为 root,运行此命令将新用户添加到 sudo 组(将高亮显示的 sammy 用户名替换为你的新用户):

usermod -aG sudo sammy

现在,当你以普通用户身份登录时,可以在命令前输入 sudo 来以超级用户权限运行它们。

步骤4 - 设置防火墙

Ubuntu 服务器可以使用 UFW 防火墙来确保只允许连接到某些服务。你可以使用该应用程序设置一个基本的防火墙。

注意: 如果您的服务器运行在 Linux-Console.net 上,您可以选择使用 Linux-Console.net 云防火墙,而不是 UFW 防火墙。我们建议一次只使用一个防火墙,以避免难以调试的规则冲突。

应用程序可以在安装时将它们的配置文件注册到 UFW。这些配置文件允许 UFW 通过名称管理这些应用程序。OpenSSH 是允许您连接服务器的服务,它的配置文件已经在 UFW 中注册。

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

ufw app list
Available applications:
  OpenSSH

您需要确保防火墙允许 SSH 连接,以便下次可以登录到服务器。通过输入以下命令来允许这些连接:

ufw allow OpenSSH

现在通过输入以下命令启用防火墙:

ufw enable

输入 y 并按 ENTER 继续。你可以通过输入以下命令看到 SSH 连接仍然被允许:

ufw status
Status: active

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

防火墙当前阻止了除 SSH 外的所有连接。如果您安装和配置了其他服务,您需要调整防火墙设置以允许新的流量进入服务器。您可以在我们的UFW 基础教程中了解一些常见的 UFW 操作。

若要稍后添加 HTTP 访问,只允许所需的服务:

ufw allow 80/tcp

ufw allow 443/tcp

请参考《在 Ubuntu 上使用 UFW 设置防火墙》了解常见模式,如速率限制和特定服务规则。

步骤 5 - 为您的普通用户启用外部访问

现在你已经有了一个日常使用的普通用户,你需要确保可以直接通过 SSH 登录该账户。

注意:在确认您可以使用新用户登录并使用 sudo 之前,建议保持以 root 登录。如果您在连接时遇到问题,可以以 root 身份进行故障排除并进行必要的更改。如果您使用 Linux-Console.net Droplet 并且遇到 root SSH 连接问题,可以通过恢复控制台重新访问 Droplet。

为新用户配置 SSH 访问取决于您的服务器的root账户是使用密码还是 SSH 密钥进行身份验证。

如果根账户使用密码认证

如果你使用 密码 登录了你的 root 账户,那么 SSH 的密码认证已经 启用。你可以通过打开一个新的终端会话并使用你的新用户名进行 SSH 来连接到你的新用户账户:

ssh sammy@your_server_ip

输入常规用户的密码后,您将登录成功。请记住,如果您需要以管理员权限运行命令,请在命令前输入 sudo,如:

sudo command_to_run

每次会话中首次使用 sudo 时(之后会不定期地再次出现),系统会提示您输入常规用户的密码。

为了增强服务器的安全性,我们强烈建议设置 SSH 密钥,而不是使用密码认证。请参考我们关于在 Ubuntu 上设置 SSH 密钥的指南,学习如何配置基于密钥的认证。

如果根账户使用 SSH 密钥认证

如果您使用 SSH 密钥登录了您的 root 账户,那么 SSH 的密码认证将被 禁用。要使用 SSH 密钥以普通用户身份登录,您必须将本地公钥的副本添加到新用户的 ~/.ssh/authorized_keys 文件中。

由于您的公钥已经在服务器的 root 账户的 ~/.ssh/authorized_keys 文件中,您可以使用当前的会话将该文件和目录结构复制到您的新用户账户中。

最简单的方法是使用 rsync 命令复制具有正确所有权和权限的文件。此命令将复制 root 用户的 .ssh 目录,保留权限,并修改文件所有者,所有操作都在一个命令中完成。请确保将下面命令中高亮的部分更改为你普通用户的名称:

注意: rsync 命令对末尾有斜杠和没有斜杠的源和目的地的处理方式不同。在下面使用 rsync 时,请确保源目录(~/.ssh)不包含尾随斜杠(请检查确认您没有使用 ~/.ssh/)。

如果你不小心在命令末尾加了一个斜杠,rsync 会将 root 账户的 ~/.ssh 目录的内容复制到 sudo 用户的主目录,而不是复制整个 ~/.ssh 目录结构。文件会出现在错误的位置,SSH 将无法找到并使用它们。

rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

现在,在本地计算机上打开一个新的终端会话,并使用你的新用户名通过 SSH 登录:

ssh sammy@your_server_ip

你应该使用新的用户账户连接到服务器而无需输入密码。请记住,如果你需要以管理员权限运行命令,请在命令前输入 sudo,例如:

sudo command_to_run

每次会话首次使用 sudo 时(以及之后的某些时间段),系统会提示您输入常规用户的密码。

常见问题

1. Ubuntu 可以用作服务器吗?

绝对如此。 Ubuntu 是全球最流行的服务器操作系统之一,适用于各种场景,从轻量级 VPS 实例到企业级集群。

Ubuntu 服务器的主要优势:

功能描述
开源 & 免费无需许可费用。
长期支持长期支持版本可获得 5 年的更新。
云就绪针对主要云平台优化的镜像(Linux-Console.net、AWS、GCP)。
适合 DevOps预装有 OpenSSH、apt 和 systemd。
广泛的硬件支持可在 x86、ARM、PPC 等平台上运行。

Ubuntu 处理得很好的示例服务器任务:

  • 网站托管(Apache,Nginx)
  • 数据库(PostgreSQL、MySQL、MongoDB)
  • 应用服务器(Node.js、Python、Java)
  • 容器编排(Docker,Kubernetes)
  • 文件存储与备份

示例: 检查你的 Ubuntu 版本:

lsb_release -a
# OR
cat /etc/os-release

有关 SSH 和软件包管理的更多信息,请参阅:OpenSSH 密钥指南。

2. Ubuntu 服务器是免费的吗?

是的。 Ubuntu 服务器可以完全免费下载、安装和使用,无论是个人、教育还是商业用途。没有任何许可费用或订阅费用。

如果您正在寻找一种简单可靠的入门方式,可以考虑在 Linux-Console.net 上部署 Ubuntu Droplet。Linux-Console.net 提供预配置的 Ubuntu 服务器镜像,因此您只需几次点击就能启动安全、可用于生产的服务器——非常适合初学者和专家。

注意: 只有当您需要扩展的安全维护、合规功能或企业支持时,才需要使用 Ubuntu Pro。对于大多数用户和常规工作负载,免费的 Ubuntu Server 版本已经足够。

3. 我应该为新服务器选择哪个 Ubuntu 版本?

建议:
使用长期支持(LTS)版本。LTS 版本适合生产环境使用,并可获得为期五年的更新。

流行的 LTS 版本:

发布发布日期停止支持笔记
Ubuntu 24.04 长期支持版2024年4月2029年4月最新;推荐用于新安装
Ubuntu 22.04 长期支持版2022年4月2027年4月广泛使用;高度稳定

检查您当前的版本:

lsb_release -cs   # Shows the codename (e.g., 'jammy' for 22.04)

本指南及其命令适用于 24.04 LTS 和 22.04 LTS,并经过验证。

4. 我应该禁用 SSH 的密码认证吗?

是的,为了更强的安全性。
一旦你设置了 SSH 密钥认证 并确认可以登录,禁用 SSH 的密码认证可以减少服务器遭受暴力破解攻击的风险。

步骤:

  1. 打开 SSH 配置:

    sudo nano /etc/ssh/sshd_config
  2. 查找并设置:

    PasswordAuthentication no
  3. 重启 SSH:

    sudo systemctl reload sshd

重要: 在进行此更改之前,请始终保留其他访问服务器的方法,例如使用 Linux-Console.net 的 Droplet 控制台或备用访问方式。

5. 我需要更改默认的 SSH 端口吗?

更改 SSH 端口(默认 22)是可选的,并不能替代正确的 SSH 密钥认证或防火墙配置。

优点与缺点:

更改端口22效果
略微减少扫描自动化机器人可能绕过非22端口
不是安全替代品攻击者仍然可以找到开放端口
需要更新防火墙需要更改 UFW 或 firewalld 规则

如果你更改端口:

  1. 编辑 /etc/ssh/sshd_config:

    Port 2277   # Example port; use a port >1024 that's not in use
  2. 更新 UFW 规则:

    sudo ufw allow 2277/tcp
  3. 使用以下方式连接:

    ssh -p 2277 user@your_server_ip
  4. 记录您的新端口以避免被锁定。

将其作为额外的步骤,而不是你的主要防御手段。

结论

恭喜!您已完成 Ubuntu 的基本初始服务器设置流程。通过遵循这些步骤,您大大提升了服务器的安全性,并为未来的配置打下了基础。现在,您拥有一个具有 sudo 权限的非 root 用户账户,用于更安全的日常管理,同时已配置防火墙(UFW)以限制除您明确允许之外的所有流量,并启用了安全的 SSH 密钥认证,从而显著降低了未经授权访问的风险。

通过实施这些最佳实践,你的 Ubuntu 服务器已经准备好进行网站托管和应用部署,以及任何进一步的自定义。本教程中完成的设置是几乎每个 Linux 服务器项目的基础要求,理解这些基础知识将帮助你自信地管理云端或本地的基础设施。

请记得记录您的新凭证,定期进行更新,并持续学习以保持系统的安全性和可维护性。

下一步

到此为止,你已经为你的服务器打下了坚实的基础。现在你可以在服务器上安装任何所需的软件。

如果你想更熟悉 Linux 命令,可以查看我们的《Linux 命令行入门》。

在寻找有关 SSH 和防火墙加固的下一步操作吗?请查看《SSH 基础知识:使用 SSH 服务器、客户端和密钥》、《如何使用 SSH 连接到远程服务器》以及《理解 SSH 加密和连接过程》。

接下来试试这个: 使用 Ubuntu 24.04 LTS 在 Linux-Console.net 创建一个 Droplet,按照这些步骤操作,然后添加一个托管数据库或通过应用平台进行部署。查看 Linux-Console.net 的 Ubuntu 发行版页面,以获取最新的镜像和发布说明。

感谢您与 Linux-Console.net 社区一起学习。