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

介绍

当你第一次创建一个新的Ubuntu 16.04服务器时,有一些配置步骤,你应该提前作为基本设置的一部分。

步骤一: root login

要登录您的服务器,您将需要知道您的服务器的公共IP地址. 您还需要密码或,如果您安装了SSH密钥进行身份验证,则需要用户帐户的私钥。

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

1[environment local]
2ssh root@your_server_ip

完成登录过程,通过接受有关主机真实性的警告,如果出现,然后提供您的根身份验证(密码或私钥)。

关于根

根用户是 Linux 环境中具有非常广泛的权限的管理用户. 由于根帐户的权限增加,您实际上被阻止定期使用它。

下一步是创建一个替代的用户帐户,对日常工作影响范围减少,我们将教你如何在你需要时获得增加的特权。

步骤二:创建新用户

一旦您登录为root,我们将准备添加新的用户帐户,我们将从现在开始使用它来登录。

此示例创建了一个名为sammy的新用户,但您应该用您喜欢的用户名更换它:

1adduser sammy

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

输入一个强大的密码,并可选地填写任何额外的信息,如果您想要,这不需要,您可以在任何您想要跳过的字段中点击ENTER

步骤三:根特权

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

为了避免需要退出我们的正常用户并重新登录作为根帐户,我们可以为我们的正常帐户设置所谓的超级用户或根特权,这将允许我们的正常用户通过在每个命令前放置sudo这个词来运行具有管理特权的命令。

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

作为root,运行此命令,将新用户添加到 sudo 组中(以新用户代替突出的单词):

1usermod -aG sudo sammy

现在您的用户可以使用超级用户权限执行命令! 有关此功能的更多信息,请参阅 this sudoers tutorial

如果您想增加服务器的安全性,请遵循本教程中的其余步骤。

第四步:添加公共密钥身份验证(推荐)

保护您的服务器的下一步是为您的新用户设置公共密钥身份验证,这将增加您的服务器的安全性,需要一个私人SSH密钥来登录。

创建一个关键对

如果您还没有一个 SSH 密钥对,其中包括公共和私钥,则需要生成一个。

要生成一个新的密钥对,请在您的本地机器(即您的计算机)的终端中输入以下命令:

1[environment local]
2ssh-keygen

假设您的本地用户被称为本地用户,您将看到如下所示的输出:

1[secondary_label ssh-keygen output]
2[environment local]
3Generating public/private rsa key pair.
4Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

点击返回以接受此文件名和路径(或输入新名称)。

接下来,您将被提示使用一个passphrase来保护密钥,您可以输入一个passphrase,或者让passphrase空。

** 注意:** 如果您将密码短语留空,您将能够使用私钥进行身份验证而无需输入密码短语. 如果您输入密码短语,您将需要私钥和密码短语来登录。

这会生成一个私钥,id_rsa,和一个公共钥匙,id_rsa.pub,在 localuser 主目录的.ssh 目录中。

复制公共密钥

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

<$>[注] **注:如果在创建 Droplet 时选择 SSH 密钥,则ssh-copy-id 方法不会在 DigitalOcean 上工作,这是因为如果 SSH 密钥存在,则 DigitalOcean 会禁用密码验证,而ssh-copy-id 则依赖密码验证来复制密钥。

如果您正在使用 DigitalOcean 并在创建 Droplet 时选择 SSH 密钥,请使用 [ 选项 2](# 选项-2 手动安装密钥)而不是. <$>

选项1:使用 ssh-copy-id

如果您的本地机器安装了ssh-copy-id脚本,您可以使用它来为您有登录凭证的任何用户安装公共密钥。

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

1[environment local]
2ssh-copy-id sammy@your_server_ip

在提示时提供密码后,您的公共密钥将被添加到远程用户的 .ssh/authorized_keys 文件中。

选项2:手动安装密钥

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

1[environment local]
2cat ~/.ssh/id_rsa.pub

这应该打印您的公共 SSH 密钥,该密钥应该看起来如下:

1[secondary_label id_rsa.pub contents]
2[environment local]
3ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf [email protected]

选择公共密钥,并将其复制到您的剪辑板。

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

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

1su - sammy

现在你将在你的新用户的家庭目录中。

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

1mkdir ~/.ssh
2chmod 700 ~/.ssh

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

1nano ~/.ssh/authorized_keys

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

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

现在用这个命令限制 authorized_keys 文件的权限:

1chmod 600 ~/.ssh/authorized_keys

输入此命令 ** once** 以返回 root 用户:

1exit

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

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

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

步骤五:禁用密码身份验证(推荐)

现在你的新用户可以使用 SSH 密钥登录,你可以通过禁用仅用密码的身份验证来增加你的服务器的安全性。 这样做将限制 SSH 访问你的服务器仅限于公开密钥身份验证。

<$>[注] 注: 仅在您为您的用户安装了公共密钥时,即可禁用密码身份验证,如上一节建议,步骤四。

要在您的服务器上禁用密码身份验证,请遵循以下步骤。

作为 root你的新 sudo 用户,打开 SSH daemon 配置:

1sudo nano /etc/ssh/sshd_config

查找指定密码验证的行,通过删除前面的#删除评论,然后将其值更改为

1[label sshd_config — Disable password authentication]
2PasswordAuthentication no

这里有两种其他设置,这些设置对于只有键的身份验证很重要,并且是默认设置. 如果您以前没有更改此文件,则不需要更改这些设置:

1[label sshd_config — Important defaults]
2PubkeyAuthentication yes
3ChallengeResponseAuthentication no

当您完成更改时,使用我们之前讨论的方法来保存和关闭文件(‘CTRL-X’,然后是‘Y’,然后是‘ENTER’)。

输入此文以重新加载 SSH 戴蒙:

1sudo systemctl reload sshd

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

步骤六:测试登录

现在,在退出服务器之前,你应该测试你的新配置. 不要退出连接,直到你确认你可以通过SSH成功登录。

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

1[environment local]
2ssh sammy@your_server_ip

如果您按照步骤 4 和步骤 5 所述,为您的用户添加了公钥身份验证,您的私钥将被用作身份验证。

<$>[注] 關於密钥驗證的注意事項: 如果您使用密碼句創建了密碼對,您將被要求輸入密碼句的密碼句。

一旦向服务器提供身份验证,您将作为新用户登录。

請記住,如果您需要執行根權限的命令,請在執行之前輸入sudo:

1sudo command_to_run

步骤七:设置基本防火墙

Ubuntu 16.04 服务器可以使用 UFW 防火墙,以确保仅允许连接到某些服务。

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

您可以通过键入查看:

1sudo ufw app list
1[secondary_label Output]
2Available applications:
3  OpenSSH

我们需要确保防火墙允许SSH连接,这样我们可以下次登录,我们可以通过键入允许这些连接:

1sudo ufw allow OpenSSH

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

1sudo ufw enable

输入y,然后按 Enter 来继续。通过键入,您可以看到SSH连接仍然被允许:

1sudo ufw status
1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere
7OpenSSH (v6)               ALLOW Anywhere (v6)

如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。

从这里到哪里去?

在这一点上,您对您的服务器有一个坚实的基础,您现在可以在您的服务器上安装所需的任何软件。

Published At
Categories with 技术
comments powered by Disqus