Red Hat Enterprise Linux 10 更新排错:403 权限错误的排查与处理

在日常的 Linux 运维工作中保持系统更新是至关重要的。最近在维护 Red Hat Enterprise Linux (RHEL) 10 系统时,我遇到了一个让人头疼的问题:执行 dnf update 命令时,系统反复报出“Status code: 403 Forbidden”的错误。尽管 subscription-manager 显示系统已注册,但软件仓库的访问权限似乎被拒绝了。

1. 问题现象:dnf update 403 错误

我在终端执行系统更新命令 dnf update 时,出现了以下错误信息:

dnf update

系统报错:

Errors during downloading metadata for repository 'rhel-10-for-x86_64-appstream-rpms':
  - Status code: 403 for https://cdn.redhat.com/content/dist/rhel10/10/x86_64/appstream/os/repodata/repomd.xml
Error: Failed to download metadata for repo 'rhel-10-for-x86_64-appstream-rpms': Cannot download repomd.xml: All mirrors were tried

报错中的“Status code: 403”是关键线索。在 HTTP 协议中,403 状态码意味着“权限被禁止”。这表明我的请求已成功发送至 Red Hat 服务器,但服务器因权限问题拒绝了我的访问。

2. 初步排查

既然是权限问题,我首先想到了系统订阅状态。执行 subscription-manager status 命令后,结果显示一切正常:

subscription-manager status
Overall Status: Registered

这让我陷入了困惑。系统明明显示已注册,无法访问官方仓库?这说明本地的注册信息可能存在异常或缓存失效。

为了尝试修复,我决定重新注册 Insights 客户端:

insights-client --unregister
insights-client --register

但新的问题出现了:

Machine-id found, insights-client can not be registered. Please, unregister insights-client first

系统中的某些残留信息阻止了重新注册,即使我已尝试注销。这进一步证实了问题出在本地已损坏或过时的注册数据上。

3. 解决步骤:彻底清除并重新注册

步骤一:清除本地订阅数据

使用 subscription-manager clean 命令,该命令会移除所有本地存储的订阅和授权信息

subscription-manager clean

执行后,终端会返回 All local data removed,这表明旧的、可能已损坏的授权数据已经被彻底清除。

步骤二:重新注册系统

清除数据后,系统将处于未注册状态。我们可以使用 subscription-manager register 命令进行重新注册,并输入正确的 Red Hat 账户凭据。

subscription-manager register

系统会提示输入用户名和密码,注册成功后会返回新的系统 ID:

Registering to: subscription.rhsm.redhat.com:443/subscription
Username: <你的 Red Hat 账户用户名>
Password: <你的 Red Hat 账户密码>
The system has been registered with ID: ...

步骤三:验证更新

完成重新注册后,再次执行 dnf update。这次,系统终于能够顺利连接到 Red Hat 软件仓库,并开始下载元数据和软件包。

dnf update

Updating Subscription Management repositories.
Red Hat Enterprise Linux 10 for x86_64 - BaseOS (RPMs)   

问题完美解决。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注