嘿,大家好!今天想跟大家聊聊一个关于VPS安全的小技巧,但我觉得它非常重要,那就是——别再直接用Root用户操作你的服务器啦!
Root用户权限太高了,一个不小心或者被恶意利用,后果可能不堪设想。所以,更安全的做法是创建一个普通用户,然后只在需要的时候通过 sudo 命令来获取Root权限。这样即使这个普通用户出了问题,也不会直接影响到整个系统。
下面,我就根据我自己的实践经验,手把手教你如何创建一个新的用户,并进行一些必要的配置,让你的VPS更安全。
前提: 你需要通过Root用户登录到你的VPS来执行下面的初始设置。
第一步:确认并安装 sudo 工具
大多数现代Linux发行版都预装了 sudo 了,但以防万一,我们还是先确认一下。如果你的系统上没有,需要先安装它。
通常,安装命令是这样的(根据你的系统选择):
- Debian/Ubuntu:
apt update
apt install sudo - CentOS/RHEL/Fedora:
yum install sudo
# 或者对于较新的系统
dnf install sudo
第二步:找到你的系统使用哪个用户组来管理 sudo 权限
不同的Linux发行版可能会使用不同的用户组来赋予用户执行 sudo 命令的权限。最常见的是 sudo 或 wheel。我们需要确认一下你的系统用的是哪个。
运行这个命令:
grep -E 'sudo|wheel' /etc/group
这个命令会查找 /etc/group 文件中包含 sudo 或 wheel 的行。
输出示例:
- 如果看到类似
sudo:x:27:这样的行,说明你的系统使用sudo组。 - 如果看到类似
wheel:x:10:这样的行,说明你的系统使用wheel组。
记下这个组名,下一步会用到。
第三步:创建新用户并加入到 sudo 用户组
现在,我们来创建那个用于日常操作的新用户。这里我以创建一个名为 yaelee 的用户为例,你需要把 yaelee 替换成你想要的名字。同时,根据上一步确认的组名,选择 sudo 或 wheel。
创建用户的命令是 useradd,加上 -m 参数是为了同时创建用户的主目录(/home/yaelee),-G 参数后面跟着的就是我们要把用户添加进去的 sudo 或 wheel 用户组。
- 如果你的系统使用
sudo组:sudo useradd -m -G sudo yaelee - 如果你的系统使用
wheel组:sudo useradd -m -G wheel yaelee
执行完这个命令,用户 yaelee 就创建好了,并且拥有了通过 sudo 执行命令的潜力。
第四步:为新用户配置SSH公钥登录
这是非常关键的一步,我们不希望新用户通过密码登录(因为密码容易被破解),而是通过更安全的SSH密钥对登录。你需要把你本地电脑生成的SSH公钥放到服务器上新用户的家目录下的 .ssh/authorized_keys 文件里。
首先,以新用户的身份创建 .ssh 目录(注意权限问题,所以我们用 sudo -u yaelee 来执行):
sudo -u yaelee mkdir -p /home/yaelee/.ssh
-p 参数确保即使父目录 /home/yaelee 不存在(虽然上一步 -m 已经创建了),这个命令也不会出错。
然后,编辑 authorized_keys 文件,将你的公钥粘贴进去。同样,我们用 sudo -u yaelee 来确保文件是以 yaelee 用户的身份创建和编辑的。
sudo -u yaelee nano /home/yaelee/.ssh/authorized_keys
在打开的编辑器里,粘贴你的公钥内容。公钥通常长这样(以 ssh-ed25519 或 ssh-rsa 开头):
ssh-ed25519 *******
粘贴完成后,保存并关闭文件(nano 编辑器通常是按 Ctrl + X,然后按 Y 确认保存,回车确认文件名)。
重要: 确保 .ssh 目录和 authorized_keys 文件的权限设置正确。通常,.ssh 目录的权限应该是 700 (只有用户自己有读写执行权限),authorized_keys 文件的权限应该是 600 (只有用户自己有读写权限)。虽然 sudo -u 创建时权限通常是对的,但最好还是检查一下:
sudo -u yaelee chmod 700 /home/yaelee/.ssh
sudo -u yaelee chmod 600 /home/yaelee/.ssh/authorized_keys
第五步:为新用户设置密码(可选但推荐)
虽然我们后面会禁用密码登录SSH,但为用户设置一个密码仍然是一个好的习惯,以备不时之需(比如本地登录)。
passwd yaelee
系统会提示你输入并确认新用户的密码。
第六步:更改新用户的默认Shell为Bash
默认情况下,新用户的Shell可能是 /bin/sh,它可能是 /bin/bash 的一个简化版本或者指向其他Shell。大多数人更习惯使用功能更强大的 /bin/bash。
要修改用户的默认Shell,需要编辑 /etc/passwd 文件。这个文件包含了系统中所有用户的信息。
nano /etc/passwd
找到你新创建的用户 yaelee 的那一行。它看起来会像这样(注意最后一部分):
yaelee:x:1000:1000::/home/yaelee:/bin/sh
将这一行的最后一部分,也就是 /bin/sh,修改为 /bin/bash:
yaelee:x:1000:1000::/home/yaelee:/bin/bash
保存并关闭文件。下次 yaelee 用户登录时,就会使用 /bin/bash 作为默认Shell了。
第七步:禁用SSH密码登录,只允许密钥登录
为了进一步提高安全性,我们应该禁止通过密码进行SSH登录,只允许使用密钥对登录。
编辑SSH服务器的配置文件 /etc/ssh/sshd_config:
nano /etc/ssh/sshd_config
找到 PasswordAuthentication 这一行。它前面可能有一个 # 符号表示被注释掉了。
#PasswordAuthentication yes
取消前面的 #,并将 yes 改为 no:
PasswordAuthentication no
你可能还需要检查并确保 PubkeyAuthentication yes 这一行没有被注释掉(通常是默认开启的)。
保存并关闭文件。然后,重启SSH服务使配置生效:
systemctl restart sshd
或者对于一些旧系统:
service sshd restart
重要警告: 在执行这一步之前,请务必确认你已经成功通过SSH密钥登录过新创建的用户!否则一旦禁用密码登录,你可能会无法再次登录服务器(除非你有其他登录方式,比如VNC或控制台)。强烈建议先保持Root用户的SSH连接打开,用新用户开一个新终端窗口测试登录成功后再继续。
第八步:配置 sudo 免密码执行(可选)
这一步是让你的日常操作更方便,通过 sudo 执行命令时不再需要输入密码。请注意,这会稍微降低安全性,因为任何能够以该用户身份执行命令的人都可以无需密码地获得Root权限。 如果你对安全性要求极高,可以跳过这一步。
编辑 sudo 的配置文件,推荐使用 visudo 命令,它会在保存前检查语法,避免配置错误导致 sudo 无法使用:
visudo
找到允许 sudo 用户组执行 sudo 的那一行。根据你第二步确认的组名,它可能是:
%sudo ALL=(ALL:ALL) ALL
或者
%wheel ALL=(ALL:ALL) ALL
将这一行修改为在 ALL 前面加上 NOPASSWD::
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
或者
%wheel ALL=(ALL:ALL) NOPASSWD:ALL
保存并关闭文件(visudo 在nano模式下也是 Ctrl + X, Y, 回车)。
现在,使用 yaelee 用户登录后,执行 sudo 命令就不需要输入密码了。
测试一下!
配置完成后,强烈建议你不要急着关闭Root用户的SSH连接。先打开一个新的终端窗口,尝试使用你新创建的用户和SSH密钥进行登录:
ssh yaelee@你的VPS的IP地址
如果能够成功登录,恭喜你!然后尝试执行一个需要Root权限的命令,比如更新软件包列表:
sudo apt update # 或者 sudo yum update / sudo dnf update
如果你配置了 NOPASSWD,这个命令应该直接执行,不需要输入密码。如果没有配置 NOPASSWD,系统会提示你输入 yaelee 用户的密码。
确认新用户和 sudo 都能正常工作后,你就可以放心地退出Root用户了。
总结
通过上面这几个步骤,我们就成功地为VPS创建了一个用于日常操作的非Root用户,并通过SSH密钥增强了登录安全性,同时保留了通过 sudo 在需要时获取Root权限的能力。这大大降低了Root账户直接暴露在外的风险,让你的VPS更加安全。
希望这篇文章对你有帮助!
