Ubuntu Server 22 ,root管理员默认禁用
一、核心步骤:设置 root 密码(必做)
- 以具备 sudo 权限的普通用户登录服务器(本地终端或 SSH 连接)。
- 执行以下命令设置 root 密码(Ubuntu 默认无 root 密码,此步骤会启用 root 账户):
sudo passwd root - 按提示完成验证与密码设置:
- 首先输入 当前普通用户的密码(验证 sudo 权限);
- 然后输入 root 的新密码(输入时不显示字符,需连续输入两次确认);
- 提示 passwd: password updated successfully 即表示设置成功。
二、可选:启用 root 直接登录(服务器常用场景)
- 服务器通常需要通过 SSH 远程登录 root,默认 Ubuntu Server 禁用 root 的 SSH 登录,需手动开启:
编辑 SSH 配置文件:sudo nano /etc/ssh/sshd_config - 查找并修改 PermitRootLogin 配置项:
- 按 Ctrl+W 输入 PermitRootLogin 快速定位;
- 将默认的 PermitRootLogin prohibit-password 或 PermitRootLogin no 改为:
PermitRootLogin yes - 若文件中无该配置项,直接在文件末尾添加上述行。
- 保存并退出编辑器:
按 Ctrl+O(保存)→ 回车(确认文件名)→ Ctrl+X(退出)。
(推荐)通过一段命令直接修改 SSH 配置文件中 PermitRootLogin 的值,以下是具体命令
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config && grep -qxF 'PermitRootLogin yes' /etc/ssh/sshd_config || echo 'PermitRootLogin yes' | sudo tee -a /etc/ssh/sshd_config
- 重启 SSH 服务使配置生效:
- 确认 SSH 服务名称(关键!)
- 不同 Linux 发行版的 SSH 服务名称不同,执行以下命令查看系统中实际的 SSH 服务名:
sudo systemctl list-unit-files | grep -E 'ssh|sshd' - 如果输出 ssh.service(常见于 Ubuntu、Debian、Mint 等):说明服务名是 ssh,而非 sshd;
- 如果输出 sshd.service(常见于 CentOS、RHEL、Fedora、Arch 等):说明未安装 SSH 服务;
- 无任何输出:未安装 SSH 服务。
情况 1:服务名是 ssh(Debian/Ubuntu 系)
- 直接用正确的服务名重启:
sudo systemctl restart sshsudo systemctl restart sshd