新建服务器后,我们应该做一些初始配置来增加服务器的安全性和易用性,为进一步的运维管理打下一个不错的基础。

创建新用户

首先需要创建一个新用户。在平时使用中应该尽量避免直接使用root账户进行操作,因为root账户拥有最高权限,使用不慎容易对系统造成严重的破坏。

登录root账户进行新用户创建,可运行以下命令远程登录服务器root账户(将SERVER_IP_ADDRESS替换为你自己的服务器IP):

ssh root@SERVER_IP_ADDRESS

按照提示完成root登录后,运行以下命令创建新用户(将demo替换为你自己的用户名):

adduser demo

接下来,给新用户创建密码(将demo替换为你自己的用户名):

passwd demo

按照提示完成密码的创建。

给新用户设置root权限

目前,我们新建的用户只有普通账户权限,我们会经常用这个账户做一下管理任务,所以要给这个新用户账户设置超级用户权限。 默认情况下,CentOS 7 系统中属于wheel组的用户拥有超级用户权限。我们只需要将新用户添加到wheel组即可(将demo替换为你自己的用户名):

gpasswd -a demo wheel

添加公钥验证

给服务器设置公钥验证后可以不用密码,通过私钥进行登录。如果再设置禁止密码登录,服务器就只能通过私钥登录,可以提升服务器的安全性。注意保存好私钥,否则可能无法登录服务器。

生成钥匙对

如果还没有SSH钥匙对,可以通过以下命令生成钥匙对:

ssh-keygen

按照提示生成钥匙对。其中密码可留空,这样以后使用私钥时可以不需要输入私钥的密码,使用更加方便但是需要注意保护私钥,避免被他人盗取。

安装公钥到服务器

安装公钥到服务器有两种方法:

1. 使用ssh-copy-id

一般情况下,Linux和MacOS自带ssh-copy-id脚本,我们可以用它来将公钥添加到服务器(按自己的配置修改demoSERVER_IP_ADDRESS):

ssh-copy-id demo@SERVER_IP_ADDRESS

按照提示完成这个步骤后,你的公钥会被添加到服务器相应用户home目录下的.ssh/authorized_keys文件中。现在你可以通过相应的私钥进行登录了。

2. 手动安装公钥

我们需要将公钥复制到务器新创建的用户home目录下的.ssh/authorized_keys文件中。如果这个目录或文件不存在,先创建这个这个目录或文件。

在服务器上,以root账户登录时,切换到新用户(将demo替换为你自己的用户名):

su - demo

在新用户的home目录下,通过以下命令创建一个名为.ssh的新目录并限制权限:

mkdir .ssh
chmod 700 .ssh

.ssh目录下创建authorized_keys文件,并把公钥粘贴到这个文件中,此处我通过vi来创建和编辑这个文件:

vi .ssh/authorized_keys

vi中,按i键进入插入模式,然后粘贴公钥到编辑器中。按ESC键退出插入模式,输入:x然后按ENTER键保存文件并退出编辑器。

接下来通过以下命令限制authorized_keys的权限:

chmod 600 .ssh/authorized_keys

运行一次这个命令退回到root账户:

exit

到此我们已经配置好新用户账户SSH登录了。

测试新用户SSH连接

设置完新用户配置之后,我们先来测试一下新用户的SSH连接。

在本地电脑打开一个新的命令行窗口,运行以下命令测试新用户的SSH连接(将demo替换为你自己的用户名):

ssh demo@SERVER_IP_ADDRESS

登录成功后,如果要用root命令执行命令,需要在命令前加“sudo”,例如:

sudo cat /etc/hostname

如果一切顺利,你可以运行以下命令退出登录:

exit

禁止root SSH登录

现在我们已经添加了一个有超级用户权限的新用户,我们可以禁止远程SSH登录root账户来增加服务器安全性。 以下命令以root账户进行操作,如果你用新创建的用户帐号操作,需要在命令前加sudo

打开SSH Daemon配置文件:

vi /etc/ssh/sshd_config

找到类似于#PermitRootLogin yes的一行文字。

提示:输入/PermitRoot并按ENTER键搜索这一行。这时光标会被移到这一行的“P”字符上。

删除这一行的注释符号#(按Shift-x)。

要替换“yes”,首先按w把光标移动到“yes”上,然后按cw并输入“no”。按ESC退出编辑。修改后的这一行会是这样:PermitRootLogin no

输入:x然后按ENTER保存文件并退出编辑器。

重启SSH

重新启动SSH服务让修改后的配置生效:

systemctl reload sshd

接下来做什么

到此你已经完成了服务器的基本设置。接下来你可以参考CentOS 7 服务器的额外推荐设置来加强服务器的安全性和可用性,也可参考如何使用firewalld设置CentOS 7的防火墙

这里虽然以CentOS 7系统为例进行介绍,但是对于其他Linux发行版,例如Ubuntu,配置过程也是大同小异,参考Initial Server Setup with Ubuntu 14.04

本文基本上是此文章的中文翻译: Initial Server Setup with CentOS 7