You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LUKS2通过内核密钥环加载密钥失败:Token unusable错误排查求助

LUKS2通过内核密钥环加载密钥失败:Token unusable错误排查求助

看起来你严格照着文档操作,结果还是碰到了密钥环里的密钥不被LUKS识别的问题,实在闹心!我帮你梳理几个可能的排查方向,你可以逐一试试:

  • 确认密钥环作用域是否匹配
    你把密钥加到了用户密钥环(@u),但cryptsetup在解锁时可能需要访问会话密钥环(@s)。试试把密钥重新加到会话密钥环里:

    read -s -p "Keyslot passphrase: "; echo -n $REPLY | keyctl padd user my:key @s
    

    之后再执行cryptsetup open命令,看看能不能识别到密钥。

  • 验证密钥内容的准确性
    有时候读取密码的过程中可能会引入多余的字符,你可以用密钥ID查看密钥的实际内容,确认和LUKS设置的密码完全一致:

    keyctl print 164227867  # 替换成你的密钥ID
    

    如果输出和你设置的密码x不一致,那说明密码写入密钥环时出了问题,得调整读取密码的方式。

  • 检查LUKS2 Token的配置细节
    用命令查看Token的具体配置,确认key-description字段和你设置的完全一致,没有拼写错误:

    cryptsetup token show /dev/loop18
    

    正常情况下输出里应该有"key-description": "my:key"这一行,如果没有或者内容不对,说明添加Token的步骤出了问题,得重新执行cryptsetup token add命令。

  • 排查权限与密钥环访问问题
    你是用root用户操作的,root的用户密钥环和普通用户的是分开的,确认root的密钥环里确实存在这个密钥:

    keyctl show @u
    

    如果密钥存在但还是无法访问,试试临时把密钥链接到进程密钥环:

    keyctl link 164227867 @p
    

    再尝试解锁操作。

  • 考虑版本兼容性问题
    你的cryptsetup版本是2.5.0,内核是5.17.5,虽然不算太老旧,但某些版本组合可能存在已知的keyring token兼容性bug。可以试试升级cryptsetup到最新稳定版,或者检查内核日志里有没有相关的错误信息(dmesg | grep crypt),说不定能找到线索。

另外,从你的debug日志里看到Token 0 unusable for segment 0 with desired keyslot priority 2和keyring_get_passphrase failed (error -126),错误码-126对应的是ENOKEY(没有找到密钥),这说明cryptsetup确实没找到匹配的密钥,上面的几个排查点应该能帮你定位问题。

备注:内容来源于stack exchange,提问作者performancematters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:32:39