使用Ubuntu 14.04初始服务器设置
介绍
当您第一次创建一个新的Ubuntu 14.04服务器时,有一些配置步骤,您应该早期作为基本设置的一部分。这将增加您的服务器的安全性和可用性,并为后续操作提供坚实的基础。
第一步 - Root 登录
要登录到您的服务器,您将需要知道您的服务器的公共IP地址和“root”用户帐户的密码。如果您尚未登录到您的服务器,您可能需要遵循本系列的第一个教程,如何使用SSH连接到您的液滴,其中详细介绍了此过程。
如果您尚未连接到您的服务器,请root使用以下命令以用户身份登录(将突出显示的字词替换为服务器的公共IP地址):
$ ssh root@SERVER_IP_ADDRESS
通过接受关于主机真实性的警告(如果出现),然后提供您的根认证(密码或私钥)来完成登录过程。如果您是第一次使用密码登录到服务器,则还会提示您更改root密码。
关于Root
root用户是具有非常广泛特权的Linux环境中的管理用户。由于root帐户的特权越来越高,您实际上不鼓励使用它。这是因为根帐户固有的一部分功能是即使偶然发生非常破坏性的变化的能力。
下一步是建立一个替代用户帐户,减少日常工作的影响范围。在需要的时候,我们会教你如何获得更多的特权。
第二步 - 创建新用户
一旦您登录root,我们准备添加我们将用于从现在开始登录的新用户帐户。
此示例创建一个名为“demo”的新用户,但您应该将其替换为您喜欢的用户名:
# adduser demo
您将被问到几个问题,从帐户密码开始。
输入强大的密码,如有需要,可以填写任何其他信息。这不是必需的,您可以在任何要跳过的字段中点击“ENTER”。
第三步 - Root 权限
现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时候可能需要做管理任务。
为了避免退出我们的普通用户并以root用户帐户登录,我们可以为我们的普通帐户设置所谓的“超级用户”或root权限。这将允许我们的普通用户通过sudo在每个命令之前放置单词来运行具有管理权限的命令。
要将这些权限添加到新用户,我们需要将新用户添加到“sudo”组中。默认情况下,在Ubuntu 14.04中,允许属于“sudo”组的用户使用该sudo命令。
作为root,运行此命令将您的新用户添加到sudo组(用新用户替换突出显示的单词):
# gpasswd -a demo sudo
现在您的用户可以使用超级用户权限运行命令!有关如何工作的更多信息,请查看此sudoers教程。
第四步 - 添加公钥认证(推荐)
保护服务器的下一步是为新用户设置公钥身份验证。设置此功能将通过要求私有SSH密钥登录来提高服务器的安全性。
生成密钥对
如果你还没有一个SSH密钥对,它由一个公钥和私钥组成,你需要生成一个。如果您已经有要使用的密钥,请跳到复制公钥步骤。
要生成新的密钥对,请在本地计算机的终端(即计算机)上输入以下命令:
$ ssh-keygen
假设您的本地用户被称为“localuser”,您将看到如下所示的输出:
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
命中返回接受此文件名和路径(或输入新名称)。
接下来,系统将提示您输入密码以确保密钥。您可以输入密码或将密码留空。
注意:如果您将密码短消息留空,您将可以使用私钥进行身份验证,而无需输入密码。如果您输入密码,您将需要私钥和密码来登录。使用密码保护密钥更安全,但两种方法都具有使用,比基本密码认证更安全。
这将在localuser的主目录的目录中生成一个私钥id_rsa和一个公钥。请记住,私钥不应与任何不能访问您的服务器的人共享!id_rsa.pub.ssh
复制公钥
生成SSH密钥对后,您将要将公钥复制到新服务器。我们将介绍两种简单的方法。
注意:ssh-copy-id如果在创建Droplet期间选择了SSH密钥,该方法将无法在DigitalOcean上运行。这是因为DigitalOcean如果存在SSH密钥,则会禁用密码验证,并且ssh-copy-id依赖密码认证来复制密钥。
如果您在创建Droplet期间使用DigitalOcean并选择了SSH密钥,请改用选项2。
选项1:使用ssh-copy-id
如果您的本地机器已ssh-copy-id安装脚本,则可以使用该脚本将您的公钥安装到您具有登录凭据的任何用户。
ssh-copy-id通过指定要安装密钥的服务器的用户和IP地址来运行脚本,如下所示:
$ ssh-copy-id demo@SERVER_IP_ADDRESS
在提示后提供密码后,您的公钥将被添加到远程用户的.ssh/authorized_keys文件中。现在可以使用相应的私钥登录服务器。
选项2:手动安装密钥
假设您使用上一步骤生成SSH密钥对,请在本地计算机的终端上使用以下命令打印公钥(id_rsa.pub):
$ cat ~/.ssh/id_rsa.pub
这应该打印您的公共SSH密钥,它应该如下所示:
id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local
选择公钥,并将其复制到剪贴板。
添加公钥到新的远程用户
要使用SSH密钥作为新的远程用户进行身份验证,必须将公钥添加到用户主目录中的特殊文件中。
在服务器上,作为root用户,输入以下命令切换到新用户(替换您自己的用户名):
# su - demo
现在您将进入新用户的主目录。
创建一个新目录,.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
键入此命令一次返回给root用户:
$ exit
现在您可以将SSH登录为新用户,使用私钥作为身份验证。
要了解关于密钥身份验证如何工作的更多信息,请阅读本教程:如何在Linux服务器上配置基于SSH密钥的身份验证。
第五步 - 配置SSH守护进程
现在我们有了新帐号,我们可以通过修改SSH守护程序配置(允许我们远程登录的程序)来禁止我们的服务器远程访问root帐户。
首先用root用户的文本编辑器打开配置文件:
# nano /etc/ssh/sshd_config
接下来,我们需要找到如下所示的行:
# /etc/ssh/sshd_config(之前)
PermitRootLogin yes
在这里,我们可以选择通过SSH禁用root登录。这通常是一个更安全的设置,因为我们现在可以通过我们的普通用户帐户访问我们的服务器,并在必要时升级特权。
将此行修改为“否”,以禁用root登录:
# /etc/ssh/sshd_config(之后)
PermitRootLogin no
强烈建议在每个服务器上禁用远程root登录!
当你完成更改,保存和使用,我们走过去前面(的方法关闭该文件CTRL-X,然后Y,再ENTER)。
第六步 - 重新加载SSH
现在我们已经做出了改变,我们需要重新启动SSH服务,以便使用我们的新配置。
键入以重新启动SSH:
# service ssh restart
现在,在我们注销服务器之前,我们应该测试我们的新配置。我们不想断开连接,直到我们确认可以成功建立新的连接。
在本机上打开一个新的终端窗口。在新窗口中,我们需要开始一个新的连接到我们的服务器。这次,而不是使用root帐户,我们要使用我们创建的新帐户。
对于我们向您展示如何配置上面的服务器,您可以使用此命令进行连接。在适当的地方替换您自己的用户名和服务器IP地址:
$ ssh demo@SERVER_IP_ADDRESS
注意:如果您正在使用PuTTY连接到您的服务器,请确保更新会话的端口号以匹配服务器的当前配置。
系统将提示您输入您配置的新用户密码。之后,您将以新用户身份登录。
请记住,如果您需要使用root权限运行命令,请在此之前键入“sudo”:
$ sudo command_to_run
如果一切顺利,您可以输入以下内容退出会话:
$ exit
从哪里来?
在这一点上,您为您的服务器奠定了坚实的基础。您现在可以在服务器上安装任何您需要的软件。