介绍
当您第一次创建新服务器时,作为基本设置的一部分,您应该尽早执行一些配置步骤。这将提高服务器的安全性和可用性,并为后续操作提供坚实的基础。
第一步 – 根登录
要登录您的服务器,您需要知道服务器的公共 IP 地址和“root”用户帐户的密码,使用相应的SSH工具进行登录。
关于根
root 用户是 Linux 环境中的管理用户,拥有非常广泛的权限。由于 root 帐户具有更高的权限,因此实际上不鼓励 您定期使用它。这是因为 root 帐户固有的部分权力是能够进行非常具有破坏性的更改,即使是意外更改。
下一步是为日常工作设置一个影响范围较小的替代用户帐户。我们将教您如何在需要时获得更多特权。
第二步 – 创建一个新用户
一旦您以 身份登录 root
,我们就准备添加我们将用于从现在开始登录的新用户帐户。
此示例创建了一个名为“demo”的新用户,但您应该将其替换为您喜欢的用户名:
adduser demo
复制
接下来,为新用户分配一个密码(同样,用您刚刚创建的用户替换“demo”):
passwd demo
复制
输入一个强密码,然后再次重复以进行验证。
第三步 – 根权限
现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时可能需要执行管理任务。
为了避免退出我们的普通用户并以 root 帐户重新登录,我们可以为我们的普通帐户设置所谓的“超级用户”或 root 权限。这将允许我们的普通用户通过 sudo
在每个命令之前放置单词来运行具有管理权限的命令。
要将这些权限添加到我们的新用户,我们需要将新用户添加到“wheel”组。默认情况下,在 CentOS 7 上,允许属于“wheel”组的用户使用该 sudo
命令。
As 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的主目录的目录中生成一个私钥 id_rsa
和一个公钥。请记住,不应与不应访问您的服务器的任何人共享私钥!id_rsa.pub
`.ssh`
复制公钥
生成 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 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
then ENTER
以保存并退出文件。
现在使用以下命令限制authorized_keys 文件的权限:
chmod 600 .ssh/authorized_keys
复制
键入此命令一次 以返回给 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
,然后输入“否”。打 Escape
,当你完成编辑。它应该是这样的:
/etc/ssh/sshd_config(之后)
PermitRootLogin no
复制
强烈建议在每台服务器上禁用远程 root 登录!
输入 :x
then ENTER
以保存并退出文件。
重新加载 SSH
现在我们已经进行了更改,我们需要重新启动 SSH 服务,以便它使用我们的新配置。
键入以下内容以重新启动 SSH:
systemctl reload sshd
复制
现在,在我们注销服务器之前,我们应该测试 我们的新配置。在确认可以成功建立新连接之前,我们不想断开连接。
打开一个新的 终端窗口。在新窗口中,我们需要开始与服务器的新连接。这一次,我们不使用 root 帐户,而是使用我们创建的新帐户。
对于我们上面配置的服务器,使用此命令进行连接。在适当的地方替换您自己的信息:
ssh demo@SERVER_IP_ADDRESS
复制
注意: 如果您使用 PuTTY 连接到您的服务器,请确保更新会话的端口 号以匹配您服务器的当前配置。
系统将提示您输入您配置的新用户密码。之后,您将作为新用户登录。
请记住,如果您需要以 root 权限运行命令,请在它之前键入“sudo”,如下所示:
sudo command_to_run
复制
如果一切顺利,您可以通过键入以下内容退出会话:
exit
评论(2)