我尝试使用规范的 livepatch,但失败了。我有 3 个 VPS。一个月前,我在第一个 VPS 上添加了我的令牌。现在我想将相同的令牌添加到我的其他 2 个 VPS,但失败了。
1 VPS(为该论坛剪切我的令牌)
root@lowend:~# canonical-livepatch enable 685369f7a895434*************************
2020/08/06 10:01:43 error executing enable: cannot enable machine: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: machine token already exists
root@lowend:~# systemctl status snap.canonical-livepatch.canonical-livepatchd.service
● snap.canonical-livepatch.canonical-livepatchd.service - Service for snap application canonical-livepatch.canonical-livepatchd
Loaded: loaded (/etc/systemd/system/snap.canonical-livepatch.canonical-livepatchd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-08-06 09:49:47 CEST; 12min ago
Main PID: 564 (canonical-livep)
Tasks: 8 (limit: 2365)
CGroup: /system.slice/snap.canonical-livepatch.canonical-livepatchd.service
└─564 /snap/canonical-livepatch/95/canonical-livepatchd
Aug 06 09:53:25 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
Aug 06 09:53:25 lowend canonical-livepatch[564]: Retrying request in 304 seconds.
Aug 06 09:55:18 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
Aug 06 09:55:18 lowend canonical-livepatch[564]: Retrying request in 14 seconds.
Aug 06 09:55:32 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
Aug 06 09:55:32 lowend canonical-livepatch[564]: Retrying request in 67 seconds.
Aug 06 09:56:40 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
Aug 06 09:56:40 lowend canonical-livepatch[564]: Retrying request in 303 seconds.
Aug 06 09:58:30 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
Aug 06 10:01:43 lowend canonical-livepatch[564]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: m
2 VPS
root@kvm:~# canonical-livepatch enable 685369f7a8*****************************
2020/08/06 11:09:28 error executing enable: cannot enable machine: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server response: machine token already exists
root@kvm:~# systemctl status snap.canonical-livepatch.canonical-livepatchd.service
● snap.canonical-livepatch.canonical-livepatchd.service - Service for snap application canonical-livepatch.canonical-livepatchd
Loaded: loaded (/etc/systemd/system/snap.canonical-livepatch.canonical-livepatchd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-08-06 09:09:18; 2h 0min ago
Main PID: 749 (canonical-livep)
Tasks: 8 (limit: 1075)
Memory: 15.7M
CGroup: /system.slice/snap.canonical-livepatch.canonical-livepatchd.service
└─749 /snap/canonical-livepatch/95/canonical-livepatchd
Aug 06 11:03:52 kvm canonical-livepatch[749]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server respons>
Aug 06 11:03:52 kvm canonical-livepatch[749]: Retrying request in 305 seconds.
Aug 06 11:04:26 kvm canonical-livepatch[749]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server respons>
Aug 06 11:04:26 kvm canonical-livepatch[749]: Retrying request in 302 seconds.
Aug 06 11:08:58 kvm canonical-livepatch[749]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server respons>
Aug 06 11:09:28 kvm canonical-livepatch[749]: bad temporary server status 500 (URL: https://livepatch.canonical.com/api/machine-tokens) server respons>
Aug 06 11:09:42 kvm canonical-livepatch[749]: Client.Check
Aug 06 11:09:42 kvm canonical-livepatch[749]: error in livepatch check state: needs-check
Aug 06 11:09:42 kvm canonical-livepatch[749]: No payload available.
Aug 06 11:09:42 kvm canonical-livepatch[749]: during refresh: cannot check: No machine-token. Please run 'canonical-livepatch enable'!
然后我又拿了另一个 token,但遇到了同样的情况。你能帮助我吗?
答案1
看来 LivePatch 令牌(密钥)是基于机器 UUID 生成的。
执行man systemd-machine-id-setup
下列内容(以及其他详细信息)。
“如果在 KVM 虚拟机内运行并配置了 UUID(通过 -uuid 选项),则此 UUID 用于初始化机器 ID。调用者必须确保传递的 UUID 足够唯一,并且对于 VM 的每个启动实例都是不同的。”
由于你的是 VPS 空间,所以独特的UUID 需要在每台不同的用户机器上强制执行,这是 VPS 提供商的责任。您应该与您的 VPS 提供商核实不同用户的 UUID 的唯一性。
来源: https://vladimir-ivanov.net/this-machine-id-is-already-enabled-with-a-different-key-or-is-non-unique/ (感谢作者 Vladimir Ivanov。)
上面页面中的解决方案表明您也可以手动生成并为您的机器分配不同的 UUID。 (在这里重复详细信息,以防万一链接有一天由于未知原因而过时。)
要生成真正唯一的 ID,请使用dbus-uuidgen
以下工具。
笔记:我认为在删除文件之前先备份一下文件是个明智的做法,以便在出现问题时启用后备选项(在执行以下步骤之前,请阅读以下警告)。
rm -f /etc/machine-id
rm /var/lib/dbus/machine-id
dbus-uuidgen --ensure=/etc/machine-id
dbus-uuidgen --ensure
在进行任何进一步的更改之前,请重新启动并查看一切是否正常工作。
警告:
运行man dbus-uuidgen
会出现以下警告(除其他外)。
“如果您尝试在正在运行的系统上更改现有的机器 ID,则可能会导致发生不好的事情。不要尝试更改此文件。另外,不要在两个不同的系统上使其相同;只要有两个不同的内核在运行,它就必须不同。”
使用该命令的解决方案systemd-machine-id-setup
解释如下:
来源: 设置 Livepatch 时显示“机器 ID 已使用不同的密钥启用,或者不唯一” (谢谢https://askubuntu.com/users/878529/ralkeon)
再次,出于前面所述的相同原因重复这些步骤。
cp /etc/machine-id /etc/machine-id.original
cp /var/lib/dbus/machine-id /var/lib/dbus/machine-id.original
nano /etc/machine-id (to remove the existing value)
systemd-machine-id-setup
> Initializing machine ID from D-Bus machine ID.
cat /etc/machine-id
笔记:
我建议你采用前一种解决方案,而不是后一种。原因是,man
的页面dbus-uuidgen
还说
“dbus-uuidgen 命令生成或读取一个通用唯一 ID。”
而systemd-machine-id-setup
“systemd-machine-id-setup 可被系统安装程序工具用来在安装时使用预配置或随机生成的 ID 来初始化存储在 /etc/machine-id 中的机器 ID。”
因此,与 不同dbus-uuidgen
,systemd-machine-id-setup
似乎也有助于使用现有的 UUID(这可能导致再次出现重复的 LivePatch 令牌)。请参阅相应的man
页面,了解确切的详细信息。只是发出警告,因为我自己还没有尝试过。
man
页面还dbus-uuidgen
提到
机器 UUID 保持不变,直到下次重启
这表明 UUID 有可能在每次重启时发生变化(同样,我也没有测试过这个)并且你的 VPS 的另一个用户可能会获得相同的 ID。
因此,总而言之,除了使用上述解决方案之外,我认为与您的 VPS 提供商联系以某种方式为所有用户强制使用唯一的 UUID 也是安全的 - 只是为了确保万无一失(同时也看看如何做到:))。
答案2
我也遇到了同样的问题。
它实际上在 Ubuntu(22.04 LTS)虚拟机中使用 VMware Workstation 查看状态
sudo ua status
然后使用
sudo ua enable esm-infra livepatch fips fips-updates cis cc-eal
我的系统上现在已启用 esm-infra 和 livepatch(使用 status 命令时其余部分仍然显示 n/a)。