Ubuntu 16.04 服务器初始化设置指南

2017-7-5 21:16 Herald 414 Ubuntu云计算Ubuntu 16.04云服务器

概述

新创建 Ubuntu 16.04 云服务器以后,几项基础的系统初始化设置应尽早进行配置。这不但能提升系统的安全性和易用性,同时也将为你后续使用服务器打下坚实的基础。

准备工作

如果你还没有云服务器,请参考下列指南创建:

第一步 — Root 用户登录

要登录服务器,你需要知道服务器的公网 IP 地址以及 root 用户的密码。如果你还不知道如何登陆你的云服务器,请先阅读《如何使用 SSH 连接到你的云服务器》。

使用以下命令,以 root 用户身份连接到服务器(使用服务器的公网 IP 替换命令中的 SERVER_IP_ADDRESS):

ssh root@SERVER_IP_ADDRESS

如果出现主机身份认证警告则接受,然后使用 root 密码或私有密钥认证身份完成登录。如果你使用 root 密码首次登录新创的服务器,建议第一时间修改 root 密码。

关于 Root

root 是 Linux 系统环境下具有极高权限的管理员用户。由于 root 用户拥有的权限太多,并不建议你使用它。root 用户所拥有的权限具有很强的破坏性,使用不慎会带来灾难性的后果。

下一步会创建一个替代账户,将权限缩减至日常工作所涉及的范畴。在必要的时候,我会告诉你如何获得更多的权限。

第二步 — 创建新用户

root 用户身份登录服务器后,我们要创建一个用以日后使用的新用户。

下面我们创建一个名为 “demo” 的用户,你可以把它换成自己喜欢的用户名:

adduser demo

从密码开始,系统会向你提出一系列的问题。

输入一个健壮的密码,并根据你的喜好选择是否填写系统要求的信息。这些信息并不是必要的,你可以直接按回车键跳过。

第三步 — Root 权限

现在,我们有了一个拥有普通用户权限的新账户。然而,有时我们可能要用这个账户做一些管理任务。

为了避免在 root 账户和普通账户之间来回切换,我们可以把普通账户设置成“超级用户”或赋予 root 权限。这样一来,普通用户在命令前面加上 sudo 就能以管理员权限执行这条命令了。

要给我们的新用户添加这样的权限,我们需要把新用户添加到 “sudo” 用户组。默认情况下,Ubuntu 14.04 中,添加到 “sudo” 组中的用户即允许使用 sudo 命令。

root 用户身份执行以下命令将新用户添加到 sudo 组(将命令中的 demo 替换成你自己的新用户):

gpasswd -a demo sudo

至此,新用户已经可以用超级用户权限执行命令了!

下一项增强系统安全的事项就是为新用户设置公钥(public key)身份认证。这项设置会在用户登录时要求用户提供 SSH 私钥进行身份认证,从而提升服务器安全性。

生成密钥对

密钥对(SSH key pair)包括一个公钥(public key)和一个私钥(private key)。如果你还没有密钥对,则需要生成一份。如果你已经拥有了密钥对,请直接跳转到 复制公钥 那一步。

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

ssh-keygen

假设你本地计算用户为 “localuser”,你将看到与下面类似的输出:

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

点击回车键接受默认的文件名和路径(或手动输入新名字)。

下一步,系统会提示你输入一个密码短语为密钥进行加密。可以按回车键跳过,也可以凭个人喜好进行设置。

注意:如果设置密码短语,在使用私钥认证身份时,系统会同时要求输入密码短语。为密钥设置密码短语能够进一步提升安全性,但无论设置与否,通过密钥验证身份都要比基础的密码认证更安全。

这一步生成了一个名为 id_rsa 的私钥,以及一个名为 id_rsa.pub 的公钥,他们均位于本地用户家目录下的 .ssh 目录中。

注意:请记住,私钥不要随意共享给他人,但凡拿到你私钥的人都能访问你的服务器!

复制公钥

SSH 密钥对生成以后,要把公钥(public key)复制到你的云服务器上。下面会提供两种简单的公钥复制方法。

注意:有些云计算平台,在创建云服务器时如果添加了公钥,那么系统会自动禁用密码认证。在这种情况下,ssh-copy-id 方法无效,可以使用 选择二 提供的方法。

选择一:使用 ssh-copy-id

如果你的本地计算机安装了 ssh-copy-id 脚本,你就可以使用它将公钥复制到任何你有权限登录的任何位置。

Run the ssh-copy-id script by specifying the user and IP address of the server that you want to install the key on, like this:

运行 ssh-copy-id 脚本并指定你要将公钥复制到的服务器对应的用户名和 IP 地址:

ssh-copy-id demo@SERVER_IP_ADDRESS

根据命令行提示输入密码并认证通过以后,你的公钥就会被复制到远程服务器指定用户的 .ssh/authorized_keys 文件中。与该公钥相匹配的私钥现在就可以进行服务器登录时的身份认证了。

选择二:手动安装公钥

假设你已经根据上面的步骤生成了密钥对,在本地计算机执行以下命令打印公钥内容(id_rsa.pub):

cat ~/.ssh/id_rsa.pub

公钥内容与下面的类似:

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

选中并将公钥复制到剪贴板。

将公钥添加给远程的新用户

要想为远程服务器的新用户开启 SSH 密钥认证,就必须将本地的公钥放置到远程用户家目录的特定文件中。

root 身份登录云服务器,输入下列代码切换到新建用户(将 demo 替换为你自己实际创建的新用户名):

su - demo

这样你就切换到新用户的家目录了。

执行以下命令创建名为 .ssh 的目录并设置权限目录权限:

mkdir .ssh
chmod 700 .ssh

使用以下命令建立并编辑名为 authorized_keys 的文件,此处使用 nano 编辑器:

nano .ssh/authorized_keys

将你的公钥粘贴到编辑器中(前面的步骤你应该已经复制到剪贴板了)。

用组合件 CTRL-X 退出编辑,然后按 Y 键保存文件,再按 ENTER 键确认文件名。

接下来用以下命令调整 authorized_keys 文件权限:

chmod 600 .ssh/authorized_keys

使用以下命令退回 root 用户:

exit

现在,你在使用新用户身份连接服务器时,就可以自动通过私钥验证身份了。

第五步 — 配置 SSH 守护进程

现在,我们有了新的账户,为了进一步提升系统的安全性,我们可以通过修改 SSH 守护进程的配置禁止 root 账户远程登录。

以 root 用户身份编辑配置文件:

nano /etc/ssh/sshd_config

找到包含下列内容的一行:

PermitRootLogin yes

在这里,我们可以选择是否禁止 root 用户通过 SSH 登录服务。因为我们现在能够使用普通用户账户访问服务器,并能在需要时使用 root 权限,因此禁用这一项通常能够进一步提高服务器的安全性。

如下所示,将这项的 “yes” 修改为 “no” 以禁止 root 用户远程登录:

PermitRootLogin no

强烈建议所有服务器都禁用 root 用户远程登录!

修改完以后,保存文件并退出编辑器(CTRL-X,然后按 Y 再按 ENTER)。

第六步 — 重启 SSH 服务

至此,SSH 相关配置修改完毕,要让新的配置生效需要重启 SSH 服务。

使用以下命令重启 SSH 服务:

service ssh restart

在登出服务器之前,我们应该先测试一下新的配置,以免断开连接以后无法建立新的连接。

在本地计算机打开一个新的终端窗口,用我们新建的用户去尝试连接到远程服务器。

用前面介绍的连接方法建立新的连接,将下方命令中的 demo 替换成你自己创建的用户名,将 SERVER_IP_ADDRESS 替换成你服务器的公网 IP 地址:

ssh demo@SERVER_IP_ADDRESS

注意:如果你使用 PuTTY 连接远程服务器,请确保根据你当前的服务器配置更新会话的端口号。

不要忘了,当你需要以 root 权限执行命令时,在命令前面加上 “sudo” 即可:

sudo command_to_run

如果一切正常,现在就可以断开连接了,使用命令:

exit

至此,你已经为你的服务器奠定了坚实的基础。接下来就在服务器上安装需要的软件了。

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '2266' }}

回复 {{ reply_to }}