生产环境,如何以最小权限使用centos服务器
在阿里云、腾讯云采购云服务器以后,第一件事是使用root用户登录云服务器,然后创建一个子用户去进行服务器的日常管理与维护,确认新建的子用户可以正常使用后,最后把root用户禁用。下面我们按照这个模式展开;
在执行“禁用 Root 登录”之前,务必确保新创建的普通用户可以正常登录,并且拥有 sudo 权限。建议保留当前的 Root 会话窗口不要关闭,直到你确认新用户可以成功登录并提权为止,以防被锁在系统之外。
第一步:创建普通用户并设置密码
- 创建子用户webadmin
# 或者使用 useradd -m webadmin (不同发行版略有差异,adduser 交互更友好) adduser webadmin - 将用户加入 sudo 组
# 为了让 webadmin 能够执行管理员操作(如安装软件、重启服务),需要将其加入 sudo 用户组。 usermod -aG wheel webadmin - 验证 sudo 权限
# 切换到新用户测试 su - webadmin sudo ls /root # 如果提示输入 webadmin 的密码,且能列出 /root 目录内容,说明权限配置成功。 # 输入 exit 退回到 root 用户
第二步:配置 SSH (如果想走传统的用户名+密码登录,请查看文章尾部关于密码设置部分)
为了更安全且方便地登录,建议配置 SSH 公钥认证,这样以后登录无需输入密码,且比密码更安全。
在本地机器生成密钥(如果还没有)
ssh-keygen -t ed25519将公钥复制到服务器(在本地机器执行)
ssh-copy-id webadmin@你的服务器IP # 输入 webadmin 的密码 # 完成后,尝试直接 ssh webadmin@你的服务器IP,应该无需密码即可登录。 # (如果没有 ssh-copy-id,可以手动将本地 ~/.ssh/id_ed25519.pub 的内容追加到服务器的 ~webadmin/.ssh/authorized_keys文件中,并确保权限正确:chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys`)
第三步:禁用 Root 用户远程登录
确认 webadmin 可以正常登录并使用 sudo 后,开始禁用 Root。
- 编辑 SSH 配置文件
sudo vim /etc/ssh/sshd_config - 修改 PermitRootLogin 参数
# 找到以下行(可能被 # 注释): PermitRootLogin yes # 修改为: PermitRootLogin no # no: 完全禁止 Root 通过 SSH 登录(包括密码和密钥)。 # prohibit-password: 仅禁止密码登录,允许密钥登录(如果你必须保留 Root 的紧急密钥通道,选这个;否则选 no)。 - (可选)修改 SSH 端口(为了进一步减少暴力破解,可以同时修改默认端口 22 为其他端口(如
Port 2222 # 注意:如果修改了端口,记得在防火墙中开放新端口! - 重启 SSH 服务
sudo systemctl restart sshd
第四步:最终验证(关键!)
- 不要关闭当前的 Root 终端窗口。
- 打开一个新的终端窗口,尝试使用新用户登录:
ssh webadmin@你的服务器IP - 测试提权:
sudo yum update - 尝试 Root 登录(应失败)
# 新开一个终端,尝试 ssh root@你的服务器IP,应该被拒绝连接或提示权限不足。
额外建议:防火墙配置
如果你修改了 SSH 端口或为了确保安全,请配置防火墙。
sudo firewall-cmd --permanent --add-service=ssh
# 如果改了端口:sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
通过以上步骤,你的服务器将具备更高的安全性:日常维护使用普通用户 webadmin,仅在必要时通过 sudo 提权,且黑客无法直接暴力破解 Root 账户。
如果不想走密钥登录,想走用户名、密码登录,那么就如下设置:
请使用 root 权限或具有 sudo 权限的用户执行以下命令:
sudo passwd webadmin
系统会提示你:
# 密码要满足:大小写字母 + 特殊字符 + 数字 (比如我设置的示例密码为:UserName@2026)
New password: [输入你想设置的新密码]
Retype new password: [再次输入确认]
设置成功后,屏幕会显示 passwd: password updated successfully。此时,webadmin 的密码就是你刚刚设置的那个。
关于密码设置的事情:
- 没有默认密码(如 123456、admin 等)。
- 密码是创建时手动输入的,或者需要后续通过 passwd 命令设置。
- 如果不确定,直接运行 sudo passwd webadmin 重置一个你知道的密码即可。