介绍
首次创建新服务器时,您应该尽早采取一些配置步骤作为基本设置的一部分。 这将提高服务器的安全性和可用性,并为您后续操作奠定坚实的基础。
第一步 - 根登录
要登录您的服务器,您需要知道服务器的公共 IP 地址和“root”用户帐户的密码。 如果您还没有登录到您的服务器,您可能需要关注本系列的第一个教程,如何使用 SSH 连接到您的 Droplet,其中详细介绍了此过程。
如果您尚未连接到您的服务器,请继续并使用以下命令以 root
用户身份登录(将突出显示的单词替换为您的服务器的公共 IP 地址):
ssh root@SERVER_IP_ADDRESS
通过接受有关主机真实性的警告(如果出现),然后提供您的根身份验证(密码或私钥)来完成登录过程。 如果这是您第一次使用密码登录服务器,系统还会提示您更改 root 密码。
关于根
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 outputGenerating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
按回车键接受此文件名和路径(或输入新名称)。
接下来,系统将提示您输入密码来保护密钥。 您可以输入密码或将密码留空。
注意:如果您将密码留空,您将能够使用私钥进行身份验证而无需输入密码。 如果您输入密码,您将需要私钥 和 密码才能登录。 使用密码保护您的密钥更安全,但这两种方法都有其用途,并且比基本密码身份验证更安全。
这会在 localuser 的主目录的 .ssh
目录中生成一个私钥 id_rsa
和一个公钥 id_rsa.pub
。 请记住,不应与不应访问您的服务器的任何人共享私钥!
复制公钥
生成 SSH 密钥对后,您需要将公钥复制到新服务器。 我们将介绍两种简单的方法来做到这一点。
注意:如果在 Droplet 创建期间选择了 SSH 密钥,ssh-copy-id
方法将无法在 DigitalOcean 上运行。 这是因为如果存在 SSH 密钥,DigitalOcean 会禁用密码验证,并且 ssh-copy-id
依赖密码验证来复制密钥。
如果您使用 DigitalOcean 并在创建 Droplet 期间选择了 SSH 密钥,请改用 选项 2。
选项 1:使用 ssh-copy-id
如果您的本地计算机安装了 ssh-copy-id
脚本,您可以使用它来将您的公钥安装到您拥有登录凭据的任何用户。
通过指定要安装密钥的服务器的用户和 IP 地址来运行 ssh-copy-id
脚本,如下所示:
ssh-copy-id demo@SERVER_IP_ADDRESS
在提示符处提供密码后,您的公钥将被添加到远程用户的 .ssh/authorized_keys
文件中。 现在可以使用相应的私钥登录服务器。
选项 2:手动安装密钥
假设您使用上一步生成了 SSH 密钥对,请在本地计算机 的终端使用以下命令 打印您的公钥(id_rsa.pub
):
cat ~/.ssh/id_rsa.pub
这应该会打印出您的公共 SSH 密钥,它应该类似于以下内容:
id_rsa.pub contentsssh-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
的文件。 我们将使用 vi 来编辑文件:
vi .ssh/authorized_keys
按 i
进入插入模式,然后通过将其粘贴到编辑器中输入您的公钥(应该在剪贴板中)。 现在点击 ESC
离开插入模式。
输入 :x
然后 ENTER
保存并退出文件。
现在使用以下命令限制 authorized_keys 文件的权限:
chmod 600 .ssh/authorized_keys
键入此命令 once 以返回给 root
用户:
exit
现在您可以使用私钥作为身份验证,以新用户身份 SSH 登录。
要了解有关密钥身份验证如何工作的更多信息,请阅读本教程:如何在 Linux 服务器上配置基于 SSH 密钥的身份验证。
第五步——配置 SSH 守护进程
现在我们有了新帐户,我们可以通过修改其 SSH 守护程序配置(允许我们远程登录的程序)来禁止远程 SSH 访问 root 帐户来保护我们的服务器。
首先使用您的文本编辑器以 root 身份打开配置文件:
vi /etc/ssh/sshd_config
在这里,我们可以选择通过 SSH 禁用 root 登录。 这通常是一个更安全的设置,因为我们现在可以通过我们的普通用户帐户访问我们的服务器,并在必要时提升权限。
要禁用远程 root 登录,我们需要找到如下所示的行:
/etc/ssh/sshd_config(之前)
#PermitRootLogin yes
提示:要搜索此行,请输入 /PermitRoot
然后点击 ENTER
。 这应该将光标带到该行上的“P”字符。
通过删除“#”符号取消注释该行(按 Shift-x
)。
现在通过按 c
将光标移动到“是”。
现在按 cw
替换“yes”,然后输入“no”。 完成编辑后点击 Escape
。 它应该如下所示:
/etc/ssh/sshd_config(之后)
PermitRootLogin no
强烈建议在每台服务器上禁用远程 root 登录!
输入 :x
然后 ENTER
保存并退出文件。
重新加载 SSH
现在我们已经进行了更改,我们需要重新启动 SSH 服务,以便它使用我们的新配置。
键入以下内容以重新启动 SSH:
systemctl reload sshd
现在,在我们注销服务器之前,我们应该 测试 我们的新配置。 在我们确认可以成功建立新连接之前,我们不想断开连接。
打开一个 new 终端窗口。 在新窗口中,我们需要开始与服务器的新连接。 这一次,我们想使用我们创建的新帐户,而不是使用 root 帐户。
对于我们上面配置的服务器,使用此命令进行连接。 在适当的地方替换您自己的信息:
ssh demo@SERVER_IP_ADDRESS
注意: 如果您使用 PuTTY 连接到您的服务器,请务必更新会话的 端口 编号以匹配您服务器的当前配置。
系统将提示您输入您配置的新用户密码。 之后,您将以新用户身份登录。
请记住,如果您需要以 root 权限运行命令,请在它之前输入“sudo”,如下所示:
sudo command_to_run
如果一切顺利,您可以通过键入以下内容退出会话:
exit
然后去哪儿?
至此,您的服务器已经有了坚实的基础。 您现在可以在服务器上安装您需要的任何软件。
如果您不确定要对服务器做什么,请查看本系列的下一个教程,了解 新 CentOS 7 服务器的其他推荐步骤 。 它涵盖了启用 fail2ban
以降低暴力攻击的有效性、基本防火墙设置、NTP 和交换文件等内容。 它还提供了指向教程的链接,这些教程向您展示了如何设置常见的 Web 应用程序。
如果您只是想探索,请查看我们的 社区 的其余部分以查找更多教程。 一些流行的想法是配置 LAMP 堆栈 或 LEMP 堆栈,这将允许您托管网站。