很多刚装完 Ubuntu 的朋友都会遇到同一个尴尬场景:安装向导里明明设置了用户名和密码,但登录系统后想切换到 root 身份,输入自己设的密码却怎么都不对;想用另一台电脑远程 SSH 连过来,又被 Permission denied 挡在外面。这两个问题放在一起,几乎成了新装 Ubuntu 用户的第一道坎,有人甚至为此直接重装系统。
今天这篇就把“新装 Ubuntu 之后如何配置 root 密码、如何开启 SSH 远程登录”这条线完整走一遍。我会把每一步背后的原理、实际踩过的坑、以及排查思路都讲清楚,不管你是刚接触 Ubuntu 的新手,还是从 CentOS 切过来的运维,应该都能少走不少弯路。
1. 整体思路与 Ubuntu 权限模型的底层逻辑
1.1 sudo 机制与 root 密码到底是什么关系
很多人卡在 root 密码这一步,根源在于没弄懂 Ubuntu 的权限模型。CentOS 这类系统在安装时可以直接设置 root 密码,但 Ubuntu 默认不让 root 账户直接登录,安装向导里创建的那个用户其实是管理员组(sudo 组)成员,你设置的是这个普通管理员的密码,不是 root 的密码。
那 root 密码存在吗?存在,但默认是锁定的、随机且无人知晓。你可以用 sudo 临时提权执行管理员命令,因为 sudo 验证的是“当前用户自己的密码”,而 su - root 或者直接登录 root 需要的是 root 账户的密码。两者本质上不是一回事,这也是新手最容易混淆的地方。
打个比方:sudo 相当于保安队长手里的一张临时门禁卡,刷卡就能办管理员的事,但刷的是自己的卡、记的是自己的名;root 则是万能总钥匙,拿到它所有门都能开。Ubuntu 默认不给这把总钥匙,是为了减少误操作和审计盲区——用 sudo 执行任何高权限命令都会留下日志,而全程用 root 操作什么都查不到。
理解了这一点,接下来的操作就有方向了:我们要做的不是“找回 root 密码”,而是“为 root 账户设置一个新密码”。
1.2 为什么新装系统默认无法用 root 远程登录
SSH 连不上 root 的情况同样有原因。首先,Ubuntu 桌面版默认根本没有安装 SSH 服务端,只有客户端 openssh-client,所以你 systemctl status ssh 会直接报错;服务器版安装时可以勾选 OpenSSH server,但如果没勾选,同样没服务。
其次,就算装了 openssh-server,Ubuntu 的 /etc/ssh/sshd_config 里对于 root 登录的默认策略也不是“放开”的。在新版本 Ubuntu 中,PermitRootLogin 的默认值是 prohibit-password,意思是允许 root 通过密钥方式登录,但禁止用密码登录。所以即使你给 root 设了密码,直接用 ssh root@ip 加密码去连,依然会被拒绝。
再叠加一个更隐蔽的点:如果你的系统里有防火墙,比如 ufw 或者云平台安全组没有放行 22 端口,那连密码验证的机会都没有,直接 connection timed out。新装 Ubuntu 的用户往往同时踩中这几个坑,导致问题看起来特别棘手。
所以正确的操作顺序应当是:先给 root 设置密码,再确认/安装 SSH 服务端,然后调整 sshd_config 参数,最后放行防火墙。下面我按这个顺序逐个拆解。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 配置前的准备与环境确认
2.1 确定系统版本和基本网络环境
无论你的 Ubuntu 是装在物理机、虚拟机还是云服务器上,第一步永远是确认系统版本和当前网络状态。很多教程直接让用户改配置,忽视基础环境,最后用户照着操作却失败,因为版本不同、默认配置不一样。
bash复制lsb_release -a
cat /etc/os-release
uname -m
至少要看清楚三个信息:系统版本(比如 Ubuntu 22.04 LTS / 24.04 LTS)、CPU 架构(x86_64 还是 aarch64)、以及是否有图形界面。不同版本在 sshd_config 的默认值上确实有差异,比如 Ubuntu 24.04 对密码算法和密钥类型的限制就更严格一些。
接着确认网络。ip addr 查看本机 IP,ping -c4 8.8.8.8 测试外网连通性。如
