«

Ubuntu Server 22 ,root管理员默认禁用

逍遥客 发布于 阅读:162 电脑网络


一、核心步骤:设置 root 密码(必做)

  1. 以具备 sudo 权限的普通用户登录服务器(本地终端或 SSH 连接)。
  2. 执行以下命令设置 root 密码(Ubuntu 默认无 root 密码,此步骤会启用 root 账户):
    sudo passwd root
  3. 按提示完成验证与密码设置:
    • 首先输入 当前普通用户的密码(验证 sudo 权限);
    • 然后输入 root 的新密码(输入时不显示字符,需连续输入两次确认);
    • 提示 passwd: password updated successfully 即表示设置成功。

二、可选:启用 root 直接登录(服务器常用场景)

  1. 服务器通常需要通过 SSH 远程登录 root,默认 Ubuntu Server 禁用 root 的 SSH 登录,需手动开启:
    编辑 SSH 配置文件:
    sudo nano /etc/ssh/sshd_config
  2. 查找并修改 PermitRootLogin 配置项:
    • 按 Ctrl+W 输入 PermitRootLogin 快速定位;
    • 将默认的 PermitRootLogin prohibit-password 或 PermitRootLogin no 改为:
      PermitRootLogin yes
    • 若文件中无该配置项,直接在文件末尾添加上述行。
  3. 保存并退出编辑器:
    按 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
  1. 重启 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 系)

Ubuntu Server

请先 登录 再评论