1. 先搞清楚:Ubuntu Pro 到底升级了什么
1.1 一个容易被忽略的“订阅服务”
很多人看到“Ubuntu LTS 升级为 Pro”这个说法,第一反应是“Pro 是不是又是一个新的发行版?”实际上完全不是。Ubuntu Pro 不是一个独立的系统镜像,也不是要你重装系统,它是 Canonical 官方提供的一套订阅服务,作用在现有的 Ubuntu LTS 系统之上。说得直白一点,它就是把原本 5 年标准支持的 LTS 系统,通过订阅方式延长到 10 年的安全维护周期,同时额外解锁一批安全与合规功能。
为什么会有这个东西?因为 LTS 版本本身的生命周期是有限的。比如 Ubuntu 20.04 LTS,标准支持到 2025 年,之后你要继续用,要么自己扛着安全漏洞,要么升级到新版本。但对于企业服务器、生产环境,尤其是跑着数据库、Web 服务的老机器,升级系统往往比续命更麻烦。Pro 就是为了解决这个“系统还活着,但官方不管了”的尴尬状态。
还有一个常见误解是“Pro 是不是要收费”。确实,Ubuntu Pro 有付费商业版,但它同时提供一个非常慷慨的免费档:个人用户最多可以在 5 台机器上免费启用 Pro 订阅。这个政策已经持续很久了,绝大多数个人开发者、实验室服务器、家庭 NAS 都完全够用。所以这篇文章讲的“升级”,绝大多数情况下是一分钱不花的正规操作。
1.2 LTS 和 Pro 的差异对比
为了让你直观理解升级前后的差距,我直接给一张对比表。这张表我整理自官方文档和实际使用体验,不是网上随便抄的那种。
| 能力项 | 普通 Ubuntu LTS | Ubuntu Pro |
|---|---|---|
| 标准安全更新 | 5 年 | 10 年 |
| ESM(扩展安全维护) | 不支持 | 支持,覆盖主仓库所有软件包 |
| Livepatch 内核热补丁 | 不支持(需单独配置) | 支持,无需重启即可修补内核漏洞 |
| CVE 自动修复 | 仅主仓库基础包 | 覆盖 28000+ 软件包,自动修复 |
| 合规组件(HIPAA/FIPS等) | 需手动折腾 | 一键启用 |
| 客户侧支持 | 社区支持 | 可选商业支持(付费项) |
| 免费额度 | - | 个人 5 台机器 |
注意一个细节:ESM 覆盖的不仅仅是内核和核心工具,而是整个主仓库(main repository)里的软件包。这是什么概念?意味着你 apt 装过的那些 PHP、Python 库、nginx 模块、openssl 之类的软件,在系统进入 EOL(生命周期结束)之后,依然能收到安全补丁。这个价值非常大,因为很多生产事故并不是系统本身被攻破,而是某个第三方库被曝出 CVE,你却无处打补丁。
后面我会演示具体操作,但建议你先理解 Pro 的本质:它不是一个“功能开关”,而是一套叠加在现有系统上的“安全维护服务层”。理解了这一点,你后续配置时就不会被各种术语绕晕。
2. 升级前的准备工作
2.1 系统版本与架构检查
聊完了概念,进入实操。我见过不少人在升级过程中卡住,回头一问都是系统版本太老或者架构不对。Pro 虽然支持的范围比较广(官方宣称 Ubuntu 14.04 ESM 以上都支持),但不同版本对不同功能支持有差异,所以第一步一定是检查自己的系统环境。
执行以下命令:
lsb_release -a输出类似这样:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy这里最关键的是 Release 那一行。我个人建议你最低用 Ubuntu 20.04 LTS 起步,再老的版本虽然技术上支持,但 ubuntu-advantage-tools(后面会讲到)的兼容性会逐渐变差,有些新功能在旧版本上不可用。
接着检查架构:
dpkg --print-architecture如果你是 x86_64 或 amd64,那没问题。如果是 arm64(比如树莓派上的 Ubuntu Server)、ppc64el、s390x,也都在支持范围内。真正需要注意的是 i386(32 位),这个架构在近几个 LTS 版本里已经逐步降级支持,Pro 的 ESM 覆盖也不完整,不建议折腾。
另外,还要确认你能正常访问 ubuntu.com 和 esm.ubuntu.com 这些域名。整个 attach 流程需要联网验证订阅状态。如果服务器在内网、有严格的 egress 管控,需要提前把这两类域名加入白名单。
2.2 注册 Ubuntu One 账号并获取订阅令牌
Pro 的订阅绑定需要一个“令牌”(token)。你可以理解为一把钥匙,attach 的时候用它来跟 Canonical 的服务器确认“这个机器归这个账号管”。
访问 Ubuntu 官网的 Pro 页面(ubuntu.com/pro),点击页面上醒目的“Get Ubuntu Pro”按钮,进入注册流程。需要注册的是 Ubuntu One 账号,就是 Canonical 的统一账号体系。如果你之前用过 Launchpad、Snap Store 或者 Ubuntu 论坛,同一个账号可以直接登录。
登录之后,在个人页面的“Your subscriptions”区域,可以看到一个免费的订阅方案,名字通常叫“Ubuntu Pro(Free Personal Use)”,每个账号最多 5 台机器。点进去之后,系统会为你生成一个形如C1ABCDEF1234xyz的令牌字符串。
这里有个经验之谈:不要把令牌直接当作 API Key 塞进代码里或者写进公开文档。它虽然可以随时作废重建,但万一泄露,别人就能把你的免费额度占用掉,5 台机器的名额其实挺紧张的。建议你把它先保存在密码管理器里,或者放到服务器的/root/.pro-token文件里,设置权限为 600,后面操作时再读取。
3. 正式升级的核心操作流程
3.1 安装并更新 ubuntu-advantage-tools
Ubuntu 上的 Pro 客户端工具叫ubuntu-advantage-tools,不过在新版本中它已经被整合进ubuntu-pro-client这个包名里。为了统一,我建议你不管哪个版本,先把系统自带的包更新一下,然后安装这个工具:
sudo apt update sudo apt install ubuntu-advantage-toolsUbuntu 22.04 及之后的 LTS 版本,这个包默认就已经安装了,但版本可能比较老。务必确保它是新版:
apt show ubuntu-advantage-tools | grep Version我写这篇文章时,规范的做法是把它升到 30.x 以上,因为新版客户端修复了不少 attach 流程中的 bug,也支持更新的服务类型。如果版本太老,建议执行:
sudo apt upgrade ubuntu-advantage-tools如果你用的是较老的 Ubuntu 20.04,可能需要先启用esm-infra相关的 apt 源才能更新到这个工具。但这里有个鸡生蛋的问题——你要启用 ESM 源,又得先有新版工具。不过不用担心,老版本工具本身就能 attach,只是功能提示没有新版丰富。先 attach、再升级,也是可以的。
3.2 用 attach 指令绑定订阅令牌
环境就绪之后,执行 attach 才算是真正开始“升级”:
sudo pro attach C1ABCDEF1234xyz如果你的令牌已经存到了文件里,可以用命令替换:
sudo pro attach $(cat /root/.pro-token)执行过程中,客户端会先连接 Canonical 的合约服务,验证令牌有效性,然后自动启用一部分默认服务。整个流程通常几十秒,视网络状况而定。成功之后,你会看到类似这样的输出:
Enabling default service esm-infra Updating package lists Ubuntu Pro services: esm-infra enabled Enable service: esm-apps Enable service: livepatch ... This machine is now attached to 'Ubuntu Pro - Free Personal Use'看到This machine is now attached这行,基本就成功了。此时你的 Ubuntu LTS 已经“升级”为带 Pro 订阅的状态。
注意,attach 的时候不要用sudo su切换到 root 再执行,在 Ubuntu 新版本中pro命令会明确提示你避免在 root 环境下直接操作,建议始终使用sudo调用,避免后续 token 读取权限混乱。
3.3 验证状态并启用关键服务
attach 完成不等于所有服务都开了。Pro 包含的服务是一组,有些是默认启用,有些需要手动开启。
用下面这个命令查看当前状态:
sudo pro status输出会以一张表格形式列出所有服务项,包括服务名、状态、描述。比如:
SERVICE ENTITLED STATUS DESCRIPTION esm-infra yes enabled Expanded Security Maintenance for LTS esm-apps yes enabled Expanded Security Maintenance for Applications livepatch yes enabled Canonical Livepatch service fips yes disabled NIST-certified FIPS modules fips-updates yes disabled FIPS compliant updates不同版本的系统,服务列表可能略有差异。关键是 esm-infra、esm-apps、livepatch 这三项的状态是 enabled。如果某几项显示 disabled,而且你确实需要对应功能,可以单独启用:
sudo pro enable livepatch如果你只是个人使用,esm-infra 和 esm-apps 默认启用了,其实已经覆盖了 90% 的价值。Livepatch 我建议也打开,后面会讲为什么值得。
4. 升级后一定要做的事:Pro 的核心功能逐个上手
4.1 ESM:把 10 年安全补丁握在手里
ESM 是 Ubuntu Pro 最重要、也最基础的能力,全称 Expanded Security Maintenance,扩展安全维护。它解决的核心问题是:当 Ubuntu LTS 进入 EOL 之后,第三方和我们自己部署的软件包还能不能继续收到安全更新。
举个例子:Ubuntu 20.04 LTS 标准支持到 2025 年 4 月。如果我不升级系统,过了这个时间点,一个 2026 年才被发现并修复的 openssl 漏洞,正常 apt 源里是不会推送修复包的。但是启用了 ESM,修复包会在 Canonical 的内部源里继续更新,你的apt upgrade依然能拉到新版本。
启用 ESM 之后,无需额外操作,它已经自动接入了 apt 源。你只需要正常执行:
sudo apt update sudo apt upgrade它会自动从 ESM 源拉取更新。想确认当前系统是否能收到 ESM 的推送,可以看源列表里有没有esm.ubuntu.com相关的条目:
grep -r "esm" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null | head -20看到类似https://esm.ubuntu.com/infra/ubuntu的地址,就说明生效了。这里有个小细节:ESM 源的优先级通常比普通源高,所以同一个包在两个源里都有新版本时,apt 会优先装 ESM 的。这个设计是故意的,确保优先覆盖安全补丁。
4.2 Livepatch 热补丁:不重启也能修内核
Livepatch 是很多人冲着 Pro 来的一大原因。它的作用通俗点说:内核出了安全漏洞,不需要重启机器就能打补丁。对生产服务器、7x24 小时服务,这个价值无可估量。
为什么香?因为普通的内核更新流程是apt upgrade装好新内核,然后reboot才能生效。对于跑着线上业务的服务器,一次重启意味着一次服务中断,可能要申请变更窗口,半夜起来操作。而 Livepatch 把补丁直接打进正在运行的内核内存中,应用之后只是进程层面短暂抖动,不需要重启。
启用方式很简单:
sudo pro enable livepatch执行之后,系统会安装canonical-livepatch这个工具,并自动完成注册。你可以查看当前补丁状态:
canonical-livepatch status输出里会显示当前内核版本、补丁状态、是否有待应用的补丁等信息。如果显示kernel patch: applied,说明热补丁已经生效。
这里有一个实操心得:Livepatch 不是万能的,它主要覆盖内核自身的 CVE 补丁,不保证覆盖所有内核模块的第三方驱动。如果你的服务器用了特殊的商用内核模块(比如某些网卡厂商的驱动),重启之后还是要留个心眼验证一下。另外,Livepatch 依赖网络连接,会定期与 Canonical 的服务通信,如果服务器完全离线,热补丁下发会失败,只能退回到传统重启打补丁的方式。
4.3 CVE 修复与合规审计组件
Pro 还有一个容易被忽略但很实用的功能:CVE 修复的主动管理。普通 apt 只会被动推送更新,但 Pro 环境下,你可以主动查询某台机器对某个 CVE 的暴露状态,并一键修复。
这个能力通过pro客户端暴露:
sudo pro fix CVE-2024-1234pro fix会帮你分析当前系统是否受该 CVE 影响,如果受影响,它会自动拉取修复包并应用;如果系统已经免疫,它会明确告诉你无需操作。对于喜欢安全审计、或者要给客户出安全报告的人来说,这个命令非常好用,省去了手动对照 CVE 列表和 apt changelog 的繁琐过程。
Pro 还附带合规组件,比如 FIPS(美国联邦信息处理标准)认证的加密模块、USG(Ubuntu Security Guide)等。这类组件主要用于政企合规场景,个人用得不多。如果你不是在做等保、FIPS 相关的交付项目,不需要碰。
不过有一点想提醒:这部分合规组件启用后,会改变系统底层的加密库配置,比如把 OpenSSL 的算法策略改成 FIPS 模式。这是系统级变更,启用后某些软件可能因为算法限制而运行异常。所以我的建议是:知道有这个东西就行,不到万不得已别在已经有业务跑的机器上乱启。
5. 常见问题与排错实录
5.1 网络与镜像源导致的 attach 失败
这是我遇到最多的一类问题。attach 报错的典型特征是执行后长时间卡住、超时,或者提示Failed to connect to authentication server。
排查思路从三步走:
第一步,确认能访问 Canonical 的服务地址:
curl -I https://ubuntu.com/pro curl -I https://contracts.canonical.com curl -I https://esm.ubuntu.com如果其中某个域名不通,说明你的网络出口拦截了访问。常见场景是企业防火墙、云安全组、或某些地区访问海外站点不稳定。你需要把上述域名加入白名单,或者换网络环境再试。
第二步,排查 apt 源是否正常。attach 过程中要读写 apt 源,如果你的sources.list已经被改成了奇怪的内网镜像,可能导致软件包校验失败。
第三步,看日志。ubuntu-advantage-tools 的日志在/var/log/ubuntu-advantage.log,报错的信息大多能在这里找到。比如我遇到过一次报错是证书链问题,最终定位到服务器系统时间不对,导致 TLS 握手失败。日志里写的是x509: certificate has expired or is not yet valid,时间同步一下就好了。
5.2 Token 误用或绑定数量超限
免费订阅最多 5 台机器。如果你在 6 台机器上 attach,第 6 台会提示订阅额度不足。
这种情况有两种处理方法。第一种,如果确实有机器不再需要 Pro 了,先在那台机器上 detach:
sudo pro detach它会释放一个名额。注意 detach 之后,ESM 等服务的包源会切回普通源,某些安全更新可能不再推送。
第二种,把某台机器从订阅里移除,不用登录网页后台。如果你手头已经没有那台机器的访问权限,可以登录 Ubuntu One 账户,在 Pro 订阅管理页面强制移除机器。这是一个很隐蔽但很有用的操作——我曾经因为重装系统忘了 detach,白白占着一个名额,后来就是通过网页后台清理的。
运营这个免费额度时,我的建议是给机器命名规范一点。attach 时系统会采集机器的主机名,你可以提前把主机名改成有辨识度的名字,比如web-prod-01,这样在后台看到的机器列表一目了然,不会出现五六台ubuntu并列的情况。
5.3 命令报错与状态检查技巧
有时候 attach 成功之后,pro status显示某个服务是 disabled,但pro enable又报错。常见的原因有两个:
一是ubuntu-advantage-tools版本太旧,新服务类型不认识。解决方法是先升级工具本身:
sudo apt install --only-upgrade ubuntu-advantage-tools二是与既有软件冲突。比如手工安装过canonical-livepatch的旧版本,再启用 Pro 的 livepatch 时可能提示冲突。先把旧工具卸载干净:
sudo apt remove canonical-livepatch sudo pro enable livepatch另外,pro status --all可以查看所有服务及其详细状态,比不加参数的信息更全。想要 JSON 格式方便脚本解析,可以加--format json。排查问题的时候,这两个参数比单纯看表格有用得多。
我这里整理了一个速查表,覆盖高频问题:
| 现象 | 直接原因 | 解决动作 |
|---|---|---|
| attach 超时 | 域名不通或网络劫持 | 检查 contracts.canonical.com,调整网络/白名单 |
| apt update 报 404 | ESM 源配错 / 系统版本过旧 | 检查 sources.list 中 esm 条目,升级 ubuntu-advantage-tools |
| attach 提示额度不足 | 免费 5 台名额已满 | detach 空闲机器,或在网页后台移除 |
| pro fix 拉不到包 | apt 缓存脏 / 源未刷新 | 执行 apt clean && apt update 再试 |
| livepatch 状态异常 | 内核模块冲突或网络不通 | 检查 canonical-livepatch status,重启 livepatch 服务 |
| 时间不同步导致 TLS 报错 | 服务器时钟偏差 | 同步时间:sudo timedatectl set-ntp true |
6. 升级后的日常维护与使用建议
6.1 定期检查订阅状态与更新推送
Pro 接好之后不是一劳永逸的,我建议把状态检查纳入日常巡检脚本。我自己会在服务器上配置一个 cron 任务,每周执行一次pro status并输出到日志,同时检查 ESM 源的更新包数量。
#!/bin/bash echo "==== Ubuntu Pro Status ====" sudo pro status --format json echo "==== Available Updates ====" apt list --upgradable 2>/dev/null | grep -c "esm"把这段脚本存到/usr/local/bin/pro-check.sh,加上可执行权限,再配合 cron 每周一早上执行,有异常一眼就能看到。
6.2 如何正确看待 Pro 免费版与商业版的区别
经常有人问我,免费版是不是阉割版?就我实际使用来看,免费版和个人开发场景匹配度很高,核心的 ESM、Livepatch、CVE 修复全都包含,没有功能裁剪。商业版主要多出来的是:不限机器数量、商业化许可授权、优先技术支持、以及一些面向企业的合规服务。这些对单机用户来说用不上,没必要为它掏钱。
但有一点要提醒:免费订阅仅限“个人使用”。如果是在公司生产环境大规模使用,需要评估是否需要购买商业订阅,以免产生授权合规问题。虽然 Canonical 在实际执行中不会立刻来找你,但作为从业者,合规意识还是要有的。
6.3 一个容易被忽视的坑:升级系统版本后要重新 attach 吗
这个问题我在社区里看到很多人问。答案是:不需要。
Ubuntu Pro 的订阅是绑定机器,而不是绑定某个具体的系统版本的。你用do-release-upgrade从 22.04 升到 24.04,只要机器的主机识别信息没变,Pro 订阅会自动继承。升级过程中系统会重新配置 apt 源,Pro 的源也会跟着调整。升级完建议执行一次pro status确认所有服务正常,偶尔会遇到 livepatch 内核版本跳变需要重新匹配的情况,手动sudo pro enable livepatch --refresh一下就好。
这个特性对长期维护的老机器非常友好,不用担心升级系统导致安全维护断了。
7. 写在最后(含个人实操体会)
处理过几十台机器的 Pro 订阅之后,我最大的感受是:这个免费额度被严重低估了。很多人觉得 Ubuntu LTS 用默认源就够了,直到某天某个依赖库爆出高危 CVE,而你的系统版本已经过了维护期,那时候才知道什么叫欲哭无泪。提前把 Pro 挂上,相当于给老系统上了一道安全保险,收益远大于那几分钟的操作成本。
最后再分享一个小技巧:如果你在本地虚拟机里测试 Pro,建议把系统时钟设成网络同步,因为 attach 流程对时间非常敏感,时间偏了大几秒就可能 TLS 握手失败,然后你会怀疑是不是自己命令敲错了。这个坑我踩过一次,排查了半个多小时才发现是虚拟机暂停恢复之后时间漂移导致的。
另外,如果你是 Python 开发者或者跑着不少第三方源安装的软件(比如 Node.js 的 nodesource 源、Docker 官方源),这些源和 ESM 不冲突。ESM 只管理主仓库和配套应用的软件源,第三方源照常工作。但在排查问题时要注意区分:报错的包到底是来自 ESM 源还是自己的第三方源,这个定位思路能省掉不少无用功。
这篇文章没有写什么高深的原理,都是可以照着操作的步骤和这些年碰过的坑。如果你打算给手头的老机器续命,按照上面的流程,操作完基本五分钟内就能看到This machine is now attached的字样,那一刻你会觉得这波操作挺值的。