介绍
当您第一次创建新的 Ubuntu 20.04 服务器时,您应该执行一些重要的配置步骤作为基本设置的一部分。这些步骤将提高服务器的安全性和可用性,并为您的后续操作奠定坚实的基础。
步骤 1 — 以 root 身份登录
要登录您的服务器,您需要知道您服务器的公共 IP 地址。您还需要密码或(如果您安装了用于身份验证的 SSH 密钥)root用户帐户的私钥。如果您还没有登录到您的服务器,您可能需要遵循我们关于如何使用 SSH 连接到 Droplets 的指南,其中详细介绍了此过程。
如果您还没有连接到您的服务器,现在以root用户身份使用以下命令登录(用您服务器的公共 IP 地址替换该命令的突出显示部分):
- ssh root@your_server_ip
如果出现有关主机真实性的警告,请接受。如果您使用密码验证,请提供您的root密码以登录。如果您使用受密码保护的 SSH 密钥,则每次会话第一次使用密钥时,系统可能会提示您输入密码。如果这是您第一次使用密码登录服务器,系统可能还会提示您更改root密码。
关于根
在根用户是在具有非常广泛的特权Linux环境中管理用户。由于root帐户具有更高的权限,因此不鼓励您定期使用它。这是因为root帐户固有的部分权力是能够进行非常具有破坏性的更改,即使是偶然的。
下一步是设置一个新的用户帐户,以减少日常使用的权限。稍后,我们将教您如何仅在需要时获得更多权限。
步骤 2 — 创建新用户
以root身份登录后,我们准备添加新用户帐户。将来,我们将使用这个新帐户而不是root登录。
此示例创建了一个名为sammy的新用户,但您应该将其替换为您喜欢的用户名:
- adduser sammy
您将被问到几个问题,首先是帐户密码。
输入一个强密码,并可以根据需要填写任何附加信息。这不是必需的,您可以点击ENTER
任何您想跳过的字段。
步骤 3 — 授予管理权限
现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时可能需要执行管理任务。
为了避免退出我们的普通用户并以root帐户重新登录,我们可以为我们的普通帐户设置所谓的超级用户或root权限。这将允许我们的普通用户通过sudo
在每个命令之前放置单词来运行具有管理权限的命令。
要将这些权限添加到我们的新用户,我们需要将该用户添加到sudo组。默认情况下,在 Ubuntu 20.04 上,允许属于sudo组的用户使用该sudo
命令。
以root身份运行此命令将您的新用户添加到sudo组(用您的新用户替换突出显示的用户名):
- usermod -aG sudo sammy
现在,当以普通用户身份登录时,您可以键入sudo
before 命令以使用超级用户权限执行操作。
第 4 步 – 设置基本防火墙
Ubuntu 20.04 服务器可以使用 UFW 防火墙来确保只允许连接到某些服务。我们可以使用此应用程序非常轻松地设置基本防火墙。
注意:如果您的服务器在 DigitalOcean 上运行,您可以选择使用DigitalOcean Cloud Firewalls而不是 UFW 防火墙。我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。
应用程序可以在安装时向 UFW 注册他们的配置文件。这些配置文件允许 UFW 按名称管理这些应用程序。OpenSSH,允许我们现在连接到我们的服务器的服务,有一个在 UFW 注册的配置文件。
您可以通过键入以下内容来查看:
- ufw app list
OutputAvailable applications:
OpenSSH
我们需要确保防火墙允许 SSH 连接,以便我们下次可以重新登录。我们可以通过键入以下内容来允许这些连接:
- ufw allow OpenSSH
之后,我们可以通过键入以下内容启用防火墙:
- ufw enable
键入y
并按ENTER
继续。您可以通过键入以下内容看到仍然允许 SSH 连接:
- ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
由于防火墙当前阻止了除 SSH 之外的所有连接,如果您安装和配置其他服务,您将需要调整防火墙设置以允许流量进入。您可以在我们的UFW Essentials指南中了解一些常见的 UFW 操作。
第 5 步 – 为您的普通用户启用外部访问
现在我们有一个日常使用的普通用户,我们需要确保我们可以直接通过 SSH 访问该帐户。
注意:在确认您可以登录并sudo
与新用户一起使用之前,我们建议保持以root身份登录。这样,如果您遇到问题,您可以以root身份进行故障排除并进行任何必要的更改。如果您正在使用 DigitalOcean Droplet 并遇到根SSH 连接问题,您可以使用 DigitalOcean 控制台登录 Droplet。
为新用户配置 SSH 访问的过程取决于您服务器的root帐户是使用密码还是 SSH 密钥进行身份验证。
如果 root 帐户使用密码验证
如果您使用 password登录到您的root帐户,则为 SSH启用了密码身份验证。您可以通过打开一个新的终端会话并使用新用户名使用 SSH 来 SSH 到您的新用户帐户:
- ssh sammy@your_server_ip
输入您的普通用户密码后,您将登录。请记住,如果您需要以管理权限运行命令,请sudo
在它之前键入如下:
- sudo command_to_run
sudo
每次会话第一次使用时(以及之后定期使用),系统会提示您输入常规用户密码。
为了增强服务器的安全性,我们强烈建议设置 SSH 密钥而不是使用密码验证。按照我们在 Ubuntu 20.04上设置 SSH 密钥的指南,了解如何配置基于密钥的身份验证。
如果 Root 账户使用 SSH 密钥认证
如果您使用 SSH 密钥登录到您的根帐户,则SSH 的密码验证将被禁用。您需要将本地公钥的副本添加到新用户的~/.ssh/authorized_keys
文件中才能成功登录。
由于您的公钥已经在服务器上root帐户的~/.ssh/authorized_keys
文件中,我们可以将该文件和目录结构复制到我们现有会话中的新用户帐户中。
复制具有正确所有权和权限的文件的最简单方法是使用rsync
命令。这将复制root用户的.ssh
目录、保留权限并修改文件所有者,所有这些都在一个命令中。确保更改以下命令的突出显示部分以匹配您的常规用户名:
注意:该rsync
命令对以斜杠结尾的源和目标与没有斜杠的源和目标的处理方式不同。在rsync
下面使用时,请确保源目录 ( ~/.ssh
)不包含尾部斜杠(检查以确保您没有使用~/.ssh/
)。
如果你不小心一个斜线添加到命令,rsync
将复制的内容中的根帐户的~/.ssh
目录到sudo
用户的主目录,而不是复制整个~/.ssh
目录结构。这些文件将位于错误的位置,SSH 将无法找到和使用它们。
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
现在,在您的本地机器上打开一个新的终端会话,并使用您的新用户名使用 SSH:
- ssh sammy@your_server_ip
您应该在不使用密码的情况下登录到新用户帐户。请记住,如果您需要以管理权限运行命令,请sudo
在它之前键入如下:
- sudo command_to_run
sudo
每次会话第一次使用时(以及之后定期使用),系统会提示您输入常规用户密码。
然后去哪儿?
此时,您的服务器已经打下了坚实的基础。您现在可以在服务器上安装所需的任何软件。