使用Ubuntu16.04进行初始服务器设置

来自菜鸟教程
跳转至:导航、​搜索

介绍

当你第一次创建一个新的 Ubuntu 16.04 服务器时,你应该尽早采取一些配置步骤作为基本设置的一部分。 这将提高服务器的安全性和可用性,并为您后续操作奠定坚实的基础。

第一步 - 根登录

要登录您的服务器,您需要知道服务器的公共 IP 地址。 您还需要密码,或者,如果您安装了用于身份验证的 SSH 密钥,则还需要“root”用户帐户的私钥。 如果您还没有登录到您的服务器,您可能需要关注本系列的第一个教程,如何使用 SSH 连接到您的 Droplet,其中详细介绍了此过程。

如果您尚未连接到您的服务器,请继续并使用以下命令以 root 用户身份登录(将突出显示的单词替换为您的服务器的公共 IP 地址):

ssh root@your_server_ip

通过接受有关主机真实性的警告(如果出现),然后提供您的根身份验证(密码或私钥)来完成登录过程。 如果这是您第一次使用密码登录服务器,系统还会提示您更改 root 密码。

关于根

root 用户是 Linux 环境中的管理用户,具有非常广泛的权限。 由于 root 帐户的特权更高,您实际上 不鼓励 定期使用它。 这是因为 root 帐户固有的部分功能是能够做出非常具有破坏性的更改,即使是偶然的。

下一步是设置一个替代用户帐户,以减少对日常工作的影响范围。 我们将教您如何在需要时获得更多特权。

第二步——创建一个新用户

一旦您以 root 身份登录,我们就准备添加新的用户帐户,我们将从现在开始用于登录。

此示例创建一个名为“sammy”的新用户,但您应该将其替换为您喜欢的用户名:

adduser sammy

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

输入一个强密码,如果您愿意,可以选择填写任何附加信息。 这不是必需的,您可以在您希望跳过的任何字段中点击 ENTER

第三步——根权限

现在,我们有了一个具有常规帐户权限的新用户帐户。 但是,我们有时可能需要执行管理任务。

为了避免退出我们的普通用户并以 root 帐户重新登录,我们可以为我们的普通帐户设置所谓的“超级用户”或 root 权限。 这将允许我们的普通用户通过在每个命令前加上单词 sudo 来以管理权限运行命令。

要将这些权限添加到我们的新用户,我们需要将新用户添加到“sudo”组。 默认情况下,在 Ubuntu 16.04 上,属于“sudo”组的用户可以使用 sudo 命令。

作为 root,运行此命令将您的新用户添加到 sudo 组(用您的新用户替换突出显示的单词):

usermod -aG sudo sammy

现在您的用户可以使用超级用户权限运行命令! 有关其工作原理的更多信息,请查看 this sudoers tutorial

如果您想提高服务器的安全性,请按照本教程中的其余步骤操作。

第四步——添加公钥认证(推荐)

保护服务器的下一步是为新用户设置公钥身份验证。 设置此项将通过要求使用 SSH 私钥登录来提高服务器的安全性。

生成密钥对

如果您还没有由公钥和私钥组成的 SSH 密钥对,则需要生成一个。 如果您已有要使用的密钥,请跳至 复制公钥 步骤。

要生成新的密钥对,请在 本地计算机 的终端输入以下命令(即 你的电脑):

ssh-keygen

假设您的本地用户名为“localuser”,您将看到如下所示的输出:

ssh-keygen outputGenerating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

按回车键接受此文件名和路径(或输入新名称)。

接下来,系统将提示您输入密码来保护密钥。 您可以输入密码或将密码留空。

注意:如果您将密码留空,您将能够使用私钥进行身份验证而无需输入密码。 如果您输入密码,您将需要私钥 密码才能登录。 使用密码保护您的密钥更安全,但这两种方法都有其用途,并且比基本密码身份验证更安全。

这会在 localuser 的主目录的 .ssh 目录中生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。 请记住,不应与不应访问您的服务器的任何人共享私钥!

复制公钥

生成 SSH 密钥对后,您需要将公钥复制到新服务器。 我们将介绍两种简单的方法来做到这一点。

注意:如果在 Droplet 创建期间选择了 SSH 密钥,ssh-copy-id 方法将无法在 DigitalOcean 上运行。 这是因为如果存在 SSH 密钥,DigitalOcean 会禁用密码验证,并且 ssh-copy-id 依赖密码验证来复制密钥。

如果您使用 DigitalOcean 并在创建 Droplet 期间选择了 SSH 密钥,请改用 选项 2


选项 1:使用 ssh-copy-id

如果您的本地计算机安装了 ssh-copy-id 脚本,您可以使用它来将您的公钥安装到您拥有登录凭据的任何用户。

通过指定要安装密钥的服务器的用户和 IP 地址来运行 ssh-copy-id 脚本,如下所示:

ssh-copy-id sammy@your_server_ip

在提示符处提供密码后,您的公钥将被添加到远程用户的 .ssh/authorized_keys 文件中。 现在可以使用相应的私钥登录服务器。

选项 2:手动安装密钥

假设您使用上一步生成了 SSH 密钥对,请在 本地计算机 的终端上使用以下命令打印您的公钥(id_rsa.pub):

cat ~/.ssh/id_rsa.pub

这应该会打印出您的公共 SSH 密钥,它应该类似于以下内容:

id_rsa.pub contentsssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

选择公钥,并将其复制到剪贴板。

要使用 SSH 密钥作为新的远程用户进行身份验证,您必须将公钥添加到用户主目录中的特殊文件中。

在服务器上,作为root用户,输入以下命令临时切换到新用户(替换成自己的用户名):

su - sammy

现在您将位于新用户的主目录中。

创建一个名为 .ssh 的新目录,并使用以下命令限制其权限:

mkdir ~/.ssh
chmod 700 ~/.ssh

现在使用文本编辑器在 .ssh 中打开一个名为 authorized_keys 的文件。 我们将使用 nano 来编辑文件:

nano ~/.ssh/authorized_keys

现在通过将其粘贴到编辑器中来插入您的公钥(应该在剪贴板中)。

点击 CTRL-x 退出文件,然后点击 y 保存您所做的更改,然后点击 ENTER 确认文件名。

现在使用以下命令限制 authorized_keys 文件的权限:

chmod 600 ~/.ssh/authorized_keys

键入此命令 once 以返回给 root 用户:

exit

现在您的公钥已安装,您可以使用 SSH 密钥以您的用户身份登录。

要了解有关密钥身份验证如何工作的更多信息,请阅读本教程:如何在 Linux 服务器上配置基于 SSH 密钥的身份验证

接下来,我们将向您展示如何通过禁用密码验证来提高服务器的安全性。

第五步 - 禁用密码验证(推荐)

现在您的新用户可以使用 SSH 密钥登录,您可以通过禁用仅密码身份验证来提高服务器的安全性。 这样做会将对您的服务器的 SSH 访问限制为仅限公钥身份验证。 也就是说,登录到您的服务器(除了控制台)的唯一方法是拥有与已安装的公钥配对的私钥。

注意: 如果您按照上一节第四步的建议为您的用户安装了公钥,则仅禁用密码验证。 否则,您会将自己锁定在服务器之外!


要在您的服务器上禁用密码身份验证,请按照以下步骤操作。

作为 root你的新 sudo 用户 ,打开 SSH 守护进程配置:

sudo nano /etc/ssh/sshd_config

找到指定 PasswordAuthentication 的行,删除前面的 # 取消注释,然后将其值更改为“no”。 进行更改后,它应该如下所示:

sshd_config — 禁用密码验证

PasswordAuthentication no

以下是对仅密钥身份验证很重要且默认设置的另外两个设置。 如果您之前没有修改过这个文件,您 不需要 更改这些设置:

sshd_config — 重要的默认值

PubkeyAuthentication yes
ChallengeResponseAuthentication no

完成更改后,使用我们之前介绍的方法保存并关闭文件(CTRL-X,然后 Y,然后 ENTER)。

键入以下内容以重新加载 SSH 守护程序:

sudo systemctl reload sshd

密码验证现已禁用。 您的服务器现在只能通过 SSH 密钥身份验证访问。

第六步——测试登录

现在,在您注销服务器之前,您应该测试您的新配置。 在您确认可以通过 SSH 成功登录之前不要断开连接。

在您的 本地计算机 上的新终端中,使用我们创建的新帐户登录到您的服务器。 为此,请使用以下命令(替换您的用户名和服务器 IP 地址):

ssh sammy@your_server_ip

如果您向用户添加了公钥身份验证,如第四步和第五步中所述,您的私钥将用作身份验证。 否则,系统将提示您输入用户密码。

关于密钥认证的注意事项: 如果您使用密码创建密钥对,系统将提示您输入密钥的密码。 否则,如果您的密钥对没有密码,您应该在没有密码的情况下登录到您的服务器。


向服务器提供身份验证后,您将以新用户身份登录。

请记住,如果您需要以 root 权限运行命令,请在它之前输入“sudo”,如下所示:

sudo command_to_run

第七步 — 设置基本防火墙

Ubuntu 16.04 服务器可以使用 UFW 防火墙来确保只允许连接到某些服务。 我们可以使用此应用程序非常轻松地设置基本防火墙。

不同的应用程序可以在安装时向 UFW 注册其配置文件。 这些配置文件允许 UFW 按名称管理这些应用程序。 OpenSSH,允许我们现在连接到我们的服务器的服务,有一个在 UFW 注册的配置文件。

您可以通过键入以下内容来查看:

sudo ufw app list
OutputAvailable applications:
  OpenSSH

我们需要确保防火墙允许 SSH 连接,以便我们下次可以重新登录。 我们可以通过键入以下内容来允许这些连接:

sudo ufw allow OpenSSH

之后,我们可以通过键入以下命令启用防火墙:

sudo ufw enable

键入“y”并按 ENTER 继续。 您可以通过键入以下内容看到仍然允许 SSH 连接:

sudo ufw status
OutputStatus: active

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

如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量进入。 您可以在本指南中学习一些常见的UFW操作。

然后去哪儿?

至此,您的服务器已经有了坚实的基础。 您现在可以在服务器上安装您需要的任何软件。