介绍
当你第一次创建一个新的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)
如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。
从这里到哪里去?
在这一点上,您对您的服务器有一个坚实的基础,您现在可以在您的服务器上安装所需的任何软件。