介绍
当您首次创建新服务器时,有几个配置步骤,您应该提前作为基本设置的一部分,这将增加您的服务器的安全性和可用性,并为后续操作提供坚实的基础。
步骤一: root login
要登录您的服务器,您需要知道您的服务器的公共IP地址和根
用户帐户的密码. 如果您尚未登录您的服务器,您可能希望遵循本系列的第一个教程,如何使用SSH连接到您的Dropplet(https://andsky.com/tech/tutorials/how-to-connect-to-your-droplet-with-ssh),其中详细涵盖了这个过程。
如果您尚未连接到您的服务器,请继续使用以下命令作为根
用户登录(用您的服务器的公共 IP 地址替换突出的单词):
1ssh root@SERVER_IP_ADDRESS
完成登录过程,通过接受有关主机真实性的警告,如果出现,然后提供您的根身份验证(密码或私钥)。
关于根
根用户是 Linux 环境中具有非常广泛的权限的管理用户. 由于根帐户的权限增加,您实际上被阻止定期使用它。
下一步是创建一个替代的用户帐户,对日常工作影响范围减少,我们将教你如何在你需要时获得增加的特权。
步骤二:创建新用户
一旦您登录为root
,我们将准备添加新的用户帐户,我们将从现在开始使用它来登录。
此示例创建了一个名为演示
的新用户,但您应该用您喜欢的用户名替换它:
1adduser demo
接下来,将密码分配给新用户(再次,用你刚刚创建的用户替换演示
):
1passwd demo
输入一个强大的密码,然后重复它来验证它。
步骤三:根特权
现在,我们有一个新的用户帐户,具有常规帐户权限,但有时我们可能需要执行管理任务。
为了避免需要退出我们的正常用户并重新登录作为 root 帐户,我们可以为我们的正常帐户设置所谓的超级用户
或 root 特权,这将允许我们的正常用户通过在每个命令前放置sudo
这个词来运行具有管理特权的命令。
要将这些特权添加到我们的新用户中,我们需要将新用户添加到轮子
组中,默认情况下,在CentOS 7中,属于轮子
组的用户可以使用sudo
命令。
作为root
,运行此命令,将新用户添加到 wheel 组中(以新用户代替突出的单词):
1gpasswd -a demo wheel
现在你的用户可以运行超级用户权限的命令! 有关如何工作的更多信息,请参阅 我们的 sudoers 教程。
第四步:添加公共密钥身份验证(推荐)
保护您的服务器的下一步是为您的新用户设置公共密钥身份验证,这将增加您的服务器的安全性,需要一个私人SSH密钥来登录。
创建一个关键对
如果您还没有一个 SSH 密钥对,其中包括公共和私钥,则需要生成一个。
要生成一个新的密钥对,请在您的 本地机器的终端中输入以下命令:
1ssh-keygen
假设您的本地用户被称为本地用户
,您将看到如下所示的输出:
1[secondary_label ssh-keygen output]
2Generating public/private rsa key pair.
3Enter 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地址,如下:
1ssh-copy-id demo@SERVER_IP_ADDRESS
在提示时提供密码后,您的公共密钥将被添加到远程用户的 .ssh/authorized_keys
文件中。
选项2:手动安装密钥
假设您使用上一个步骤生成了一个 SSH 密钥对,请使用以下命令 在本地机器的终端上来打印您的公共密钥(id_rsa.pub
):
1cat ~/.ssh/id_rsa.pub
这应该打印您的公共 SSH 密钥,该密钥应该看起来如下:
1[secondary_label id_rsa.pub contents]
2ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf [email protected]
选择公共密钥,并将其复制到您的剪辑板。
向新远程用户添加公共密钥
要允许使用 SSH 密钥作为新远程用户进行身份验证,您必须将公共密钥添加到用户主目录中的特殊文件中。
** 在服务器上**,作为根
用户,输入以下命令以切换为新用户(取代自己的用户名):
1su - demo
现在你将在你的新用户的家庭目录中。
创建一个名为.ssh
的新目录,并使用以下命令限制其权限:
1mkdir .ssh
2chmod 700 .ssh
现在在 .ssh 中打开一个名为authorized_keys
的文件,使用文本编辑器,我们将使用 vi 来编辑该文件:
1vi .ssh/authorized_keys
输入插入模式,按i
,然后输入你的公共密钥(应该在你的剪辑板)通过粘贴到编辑器。
输入 :x
然后输入 ENTER
以保存和退出文件。
现在用这个命令限制 authorized_keys 文件的权限:
1chmod 600 .ssh/authorized_keys
输入此命令 once 返回root
用户:
1exit
现在您可以作为新用户登录 SSH,使用私钥作为身份验证。
有关密钥身份验证的更多信息,请阅读本教程: 如何在 Linux 服务器上配置 SSH 基于密钥的身份验证。
步骤五:配置 SSH Daemon
现在,我们有了新的帐户,我们可以通过修改其SSH大门配置(允许我们远程登录的程序)来保护我们的服务器,以阻止远程SSH访问 root帐户。
开始使用您的文本编辑器作为 root 打开配置文件:
1vi /etc/ssh/sshd_config
在这里,我们有选择通过SSH禁用根登录,这通常是一个更安全的设置,因为我们现在可以通过我们的正常用户帐户访问我们的服务器,并在必要时升级权限。
要禁用远程 root 登录,我们需要找到看起来像这样的行:
1[label /etc/ssh/sshd_config (before)]
2#PermitRootLogin yes
提示: 要搜索此行,键入 /PermitRoot
,然后点击 ENTER
. 这应该将路由器带到该行上的P
字符。
通过删除#
符号(按Shift-x
)来消除该行。
现在通过按c
来移动向是
。
现在用按cw
来代替是
,然后键入不
。当你完成编辑时,点击Escape
。
1[label /etc/ssh/sshd_config (after)]
2PermitRootLogin no
在每个服务器上强烈建议禁用远程 root 登录!
输入 :x
然后输入 ENTER
以保存和退出文件。
SSH 重新加载
现在我们已经进行了更改,我们需要重新启动SSH服务,以便它使用我们的新配置。
输入此信息以重新启动 SSH:
1systemctl reload sshd
现在,在我们退出服务器之前,我们应该 测试我们的新配置. 我们不希望断开连接,直到我们能够确认新的连接可以成功建立。
在新窗口中,我们需要开始新连接到我们的服务器.这次,而不是使用根帐户,我们想要使用我们创建的新帐户。
对于我们上面配置的服务器,请使用此命令连接。
1ssh demo@SERVER_IP_ADDRESS
** 注意:** 如果您使用 PuTTY 连接到您的服务器,请确保更新会话的 port 号码以匹配您的服务器的当前配置。
您将被提示为您配置的新用户密码,之后,您将登录为您的新用户。
請記住,如果您需要執行根權限的命令,請在執行之前輸入sudo
:
1sudo command_to_run
如果一切顺利,您可以通过键入退出您的会话:
1exit
从这里到哪里去?
在这一点上,您对您的服务器有一个坚实的基础,您现在可以在您的服务器上安装所需的任何软件。
如果你不确定你想用你的服务器做什么,请参阅本系列的下一个教程 新 CentOS 7 服务器的额外推荐步骤。它涵盖了诸如允许 fail2ban
来减少暴力攻击的有效性、基本防火墙设置、NTP 和交换文件等内容。
如果你只是想探索,看看我们的其他社区(https://digitalocean.com/community/articles)找到更多的教程. 一些流行的想法正在配置一个 LAMP堆栈或一个 LEMP堆栈,这将 允许你托管网站。