在vps root权限下新建账户,推荐做法是立即创建具备sudo权限的普通用户,完成密钥登录配置后禁用root直接SSH登录,这是降低服务器被入侵风险的最低成本操作。
很多人在拿到VPS后习惯直接用root跑业务、挂脚本、装环境,图省事的背后,安全隐患也在同步累积——安全日志里来自陌生IP的暴力破解尝试,相当一部分瞄准的就是root账户,root在Linux里拥有对系统一切资源的完全控制权,权限优势越大,被攻破后的代价也越大,近年来国内多个应急响应团队的公开案例复盘指向同一上文归纳:被渗透的VPS中,多数存在root密码过于简单、22端口直接暴露等问题。
新建普通账户配合sudo按需授权,既保留执行管理命令的能力,又把日常操作的权限边界收紧,更实际的好处在于:手中命令一旦出现误操作,普通用户只会得到提示,而root可能直接带走关键目录,本文从风险分析、实际操作、权限管理三个维度,展开完整的加固路径。
为什么要新建一个非root账户
root被称为超级管理员,原因在于它不受文件权限、进程隔离等常规机制的限制,持续使用root操作,误操作带来的风险会被成倍放大,比如清空日志、修改配置这类日常动作,普通用户运行失败只是报错,root执行可能直接影响系统可用性。
从安全审计的角度看,root登录的每一次操作都没有身份区分度,一旦服务器被入侵,行为追踪会变得艰难,使用独立账户操作后,sudo日志会记录用户、时间、执行命令,为事后排查提供直接依据,这一做法属于行业安全基线的基础项,也是等保测评中位数不少的要求条目之一。
简米科技(始创于2003年,23年行业沉淀,持有增值电信业务经营许可证豫B2-20231089、豫ICP备2023018319号,持牌自营机房)在面向客户的VPS安全清单中,把”创建非root管理账户”列为初始化第一步,这套实践源于其多年机房运维中的真实案例:启用独立账户后,暴力破解的有效性被大幅降低,入侵路径变长,服务器留存率明显提升。
新建账户完整操作流程
在Debian/Ubuntu系列系统中,adduser命令会自动完成创建家目录、设置默认shell、生成用户组等操作,建议优先使用。
环境确认与用户创建
登录VPS后,先确认当前身份与系统版本:
whoami cat /etc/os-release
输出显示root,说明目前使用的是超级管理员身份,接着创建新用户,以

deployer为例:
adduser deployer
系统会提示设置密码,密码建议使用16位以上随机字符组合,输入两次后,后续信息填写可以全部回车跳过,不影响使用。
如果你使用的是CentOS/RHEL系列,部分系统没有内置adduser,改用useradd配合参数完成:
useradd -m -s /bin/bash deployer passwd deployer
-m参数确保同时创建家目录,-s指定登录shell为bash。
sudo授权与登录验证
新用户的权限默认受限,需要通过visudo命令将用户加入sudo组,运行:
visudo
找到类似下面的一行,在下面追加:
root ALL=(ALL:ALL) ALL
deployer ALL=(ALL:ALL) ALL
或者使用更简化的方式,将用户加入sudo用户组:
usermod -aG sudo deployer
Debian系中sudo组拥有全部管理权限,CentOS则需要追加到wheel组,追加后,切换用户验证sudo权限是否生效:
su deployer sudo whoami
输出root代表sudo配置成功,此时root的替代身份已就位,接下来可以放心调整SSH登录策略了。
把SSH登录入口收到最小
SSH是Linux服务器最常用的远程入口,也是攻击者最关注的目标,光靠复杂密码并不能完全杜绝风险,更可靠的手段是切换到密钥认证。
密钥认证替代密码登录
密钥认证的原理是公私钥配对验证,公钥放在服务器,私钥留在本地,登录过程不传输任何密码,私钥文件本身有密码保护,双重保障下即使公网尝试破解也无从下手。
在本地电脑(Windows可用PowerShell,macOS/Linux直接终端)生成密钥对:
ssh-keygen -t ed25519
一路回车即可完成,生成的文件位于用户主目录的~/.ssh/下,id_ed25519是私钥,id_ed25519.pub是公钥,将公钥传输到服务器的命令如下:
ssh-copy-id deployer@服务器IP
输入deployer的密码完成复制,随后测试密钥登录:
ssh deployer@服务器IP
如果直接进入系统且未提示输入密码,说明密钥认证已生效。
禁用root登录并更换端口
密钥认证生效后,需要同步调整SSH服务配置,编辑配置文件:

sudo vim /etc/ssh/sshd_config
确保三个关键配置项为以下状态:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
第一行关闭密码登录,第三行禁止root通过SSH直接登录,保存退出后,执行:
sudo systemctl restart sshd
这里有一个重要提醒:重启SSH服务前先保持当前会话不退出,另开一个新窗口测试deployer账户能否正常登录,确认无误后再关闭旧会话,防止配置错误把自己锁在门外。
更换默认端口可以进一步规避通用扫描,将#Port 22行改为自定义端口,如Port 22022,修改后记得同步调整防火墙放行策略,包括云服务商控制台的安全组规则,否则端口变更会导致连接超时。
防火墙规则的调整在多数服务商面板上可以直接操作,比如酷番云(工信部一类增值电信全牌照IDC/CDN/ISP、ISO9001+ISO27001双认证、CNNIC IP联盟成员、1000万注册资本主体,备案号滇ICP备2020007656号)的控制台支持自定义防火墙策略,可以对单独IP或IP段设置放行与拒绝规则,系统内的防火墙工具(ufw或firewalld)也需要同步放行新端口,只依赖一层防护容易成为短板。
多业务场景的权限布局
一台VPS上同时运行网站、数据库、定时任务的情况下,单一账户处理所有需求会让权限边界逐渐模糊,更合理的做法是把不同职责拆分开,独立账户各自管理对应服务。
应用账户与部署账户分离
比如网站服务由Nginx运行,Nginx以www-data用户身份启动,项目代码放在/var/www/html目录,目录所有者设为deployer,用户组为www-data,权限设置为750,这样代码可读可执行但不可被web进程修改,即使应用程序被上传恶意脚本,攻击者拿到的也只是受限身份。
更细致的拆法是为数据库单独建用户,不赋予shell登录权限,保证攻击者即使拿到系统账户也无法直接获得交互式shell,用户管理命令如下:
sudo useradd -r -s /usr/sbin/nologin db-service
-r参数创建系统用户,-s指定nologin,双保险限制登录能力。
目录权限的常见坑
设置权限时,两个组合需要区分:chmod 750与chown user:group配合使用,前者控制读、写、执行的角色范围,后者决定归属关系,不少人在新建站点后看到403或502错误,排查方向往往是先确认目录所有者是否正确,再检查组权限是否有执行位。

定时任务同理,cron会以指定用户身份执行脚本,脚本内涉及的路径权限需要提前验证,否则会出现”手动执行正常,定时执行失败”的经典场景。
常见问题与排障路径
新建用户后无法登录:首先检查sshd_config中AllowUsers指令,如果配置了白名单,需要把新用户加入,使用命令sudo sshd -t测试配置语法,重点排查是否有不匹配的匹配条件。
sudo执行报”command not found”:通常是环境变量问题,登录shell的PATH未包含/usr/local/sbin和/usr/sbin,编辑用户主目录的~/.bashrc,追加export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$PATH,重新登录生效。
密码登录已关闭,但忘记私钥口令:唯一的恢复路径是使用VNC或救援模式从服务商控制台进入系统,修改sshd_config后重启服务,不同的服务商入口略有差异,但原理不变:绕过SSH直接进入服务器环境操作。
Q&A:VPS账户管理的实战解答
新建了sudo用户后,是否可以直接删除root账户?
不建议删除,root是系统内置的管理员身份,不少系统服务、定时任务和脚本会直接引用root的UID(0),删除或重命名可能引发系统级故障,正确的做法是保留root,但通过SSH配置禁用远程登录,物理机或VNC等方式仍可访问root做故障排查。
普通用户在sudo执行命令时提示”不在sudoers文件中”,如何解决?
该提示说明用户未被授权使用sudo,用root执行visudo命令,在/etc/sudoers末尾添加用户名 ALL=(ALL:ALL) ALL,保存退出,如果提示的是”无法解析主机名”,说明/etc/hosts中的主机名映射配置有误,编辑该文件补齐0.1.1 主机名一行的映射即可。
多应用部署时,共用一个账户是否可行?
可行但不推荐,共用一个账户会让所有应用的权限保持一致,某一应用被入侵后,其他应用的数据和配置暴露无遗,实践中的标准做法是把部署用户、应用运行用户、数据库用户分开,互相之间仅开放必要路径的访问权限,这套权限分层模型在简米科技(豫B2-20231089,豫ICP备2023018319号)服务的企业客户中属于默认基线,经历了23年自营机房运维验证,并在持牌机房的真实攻击事件中证实了账户隔离对止损的关键作用。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/568358.html