Linux 开发笔记《使用CentOS 7进行初始服务器设置》

环境

CnetOS 7Nginx latestNative MacOS Mojave 10.14.6

介绍

首次创建新服务器时,您应在基本设置的早期阶段执行一些配置步骤。这将提高服务器的安全性和可用性,并为后续操作奠定坚实的基础。

第一步-根登录

要登录服务器,您需要知道服务器的公共IP地址和“ root”用户帐户的密码。如果尚未登录服务器,则可能需要遵循本系列的第一个教程“ 如何使用SSH连接到Droplet”,它详细介绍了此过程。

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

ssh -p[PORT] [root]@[SERVER_IP_ADDRESS]

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

关于根

超级用户是Linux环境中具有广泛特权的管理用户。由于root帐户具有更高的特权,因此实际上不建议您定期使用它。这是因为root帐户固有的部分能力是即使在偶然的情况下也可以进行具有破坏性的更改。

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

第二步-创建一个新用户

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

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

adduser demo

接下来,为新用户分配一个密码(再次用刚创建的用户替换“ demo”):

passwd demo

输入一个强密码,然后再次重复输入以进行验证。

第三步-根特权

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

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

要将这些特权添加到新用户,我们需要将新用户添加到“ wheel”组。默认情况下,在CentOS 7上,允许属于“ wheel”组的用户使用该sudo命令。

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

gpasswd -a demo wheel

现在,您的用户可以使用超级用户权限运行命令!有关如何工作的更多信息,请查看我们的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):

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

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

注意:如果将密码短语留空,则无需输入密码短语就可以使用私钥进行身份验证。如果输入的密码,则需要两个私钥和口令进行登录。使用密码保护你的钥匙是更安全,但两种方法都有其用途,并且比基本密码验证更安全。

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

复制公钥

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

注意:ssh-copy-id如果在创建Droplet时选择了SSH密钥,则该方法将不适用于DigitalOcean。这是因为如果存在SSH密钥,DigitalOcean会禁用密码身份验证,并且ssh-copy-id依赖密码身份验证来复制密钥。如果使用DigitalOcean并在创建Droplet时选择了SSH密钥,请改用选项2。

选项1:使用ssh-copy-id

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

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

ssh-copy-id -p[PORT] [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 [email protected]

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

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

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

在服务器上,以root用户身份输入以下命令以切换到新用户(替换您自己的用户名):

su - demo

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

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

mkdir .ssh chmod 700 .ssh

现在,在.ssh中打开一个authorized_keys使用文本编辑器调用的文件。我们将使用vi编辑文件:

vi .ssh/authorized_keys

通过按进入插入模式,i然后将其粘贴到编辑器中以输入您的公共密钥(应在剪贴板中)。现在点击ESC以退出插入模式。

输入:xthen ENTER保存并退出文件。

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

chmod 600 .ssh/authorized_keys

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

exit

现在,您可以使用私钥作为身份验证以新用户的身份进行SSH登录。

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

第五步—配置SSH守护程序

现在我们有了新帐户,我们可以通过修改服务器的SSH守护程序配置(允许我们远程登录的程序)来稍微保护我们的服务器,以禁止对root帐户的远程SSH访问。

首先以文本编辑器为根打开配置文件:

vi /etc/ssh/sshd_config

在这里,我们可以选择禁用通过SSH的root登录。通常这是一种更安全的设置,因为我们现在可以通过普通用户帐户访问服务器,并在必要时上级特权。

要禁用远程root登录,我们需要找到如下所示的行:

# /etc/ssh/sshd_config(之前) PermitRootLogin yes

提示:要搜索此行,请键入,/PermitRoot然后单击ENTER。这会将光标带到该行的“ P”字符处。

通过删除“#”符号取消注释该行(按Shift-x)。

现在,按将光标移到“是” c。

现在,通过按cw,然后输入“ no”来代替“ yes ”。Escape编辑完成后点击。它看起来应该像这样:

# /etc/ssh/sshd_config(之后) PermitRootLogin no

强烈建议在每台服务器上禁用远程root登录!

输入:xthen ENTER保存并退出文件。

重新加载SSH

现在我们进行了更改,我们需要重新启动SSH服务,以便它将使用我们的新配置。

输入以下命令重新启动SSH:

systemctl reload sshd

现在,在注销服务器之前,我们应该测试新配置。在确认可以成功建立新连接之前,我们不希望断开连接。

打开一个新的终端窗口。在新窗口中,我们需要开始与服务器的新连接。这次,我们要使用创建的新帐户,而不是使用根帐户。

对于我们上面配置的服务器,请使用此命令进行连接。在适当的地方替换您自己的信息:

ssh demo@SERVER_IP_ADDRESS

注意:如果使用PuTTY连接到服务器,请确保更新会话的端口号以匹配服务器的当前配置。

系统将提示您输入配置的新用户的密码。之后,您将以新用户身份登录。

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

sudo command_to_run

如果一切顺利,您可以输入以下内容退出会话:

exit

然后去哪儿?

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

如果不确定要如何使用服务器,请查看本系列的下一个教程,以获取有关新CentOS 7服务器的其他推荐步骤。它涵盖了诸如fail2ban降低恶意攻击效率,基本防火墙设置,NTP和交换文件之类的内容。它还提供了指向教程的链接,这些教程向您展示了如何设置常见的Web应用程序。

如果您只是想探索,请查看我们社区的其他成员以找到更多教程。一些流行的想法是配置LAMP堆栈或LEMP堆栈,这将允许您托管网站。

图书

Initial Server Setup with CentOS 7​www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7