为什么存储在 OpenLDAP 中的 OpenSSH 密钥返回的是 base64 编码

为什么存储在 OpenLDAP 中的 OpenSSH 密钥返回的是 base64 编码

我正在我的 Ubuntu 服务器上进行实验,并将 OpenSSH 密钥存储在 OpenLDAP 服务器中。关于如何实现这一目标,有足够多的例子。一个好的来源是这个。不知何故,我的密钥以 Base64 编码返回。根据消息来源,我发现这可能是由存储的密钥中的尾随换行符引起的。我很确定这不是我的问题。我该如何解决这个问题?

答案1

LDAP 输出中的 Base64 编码不是问题,不需要“解决”。它是 LDIF 格式语法的一部分,用于以文本形式表示 LDAP 数据。

您会注意到,在 LDIF 输出中,使用 Base64 编码的数据前面是双冒号而不是单冒号:

key1: value1
key2:: dmFsdWUy

在此示例中,第一个值 ( value1) 以明文形式显示,第二个值 ( value2) 以基数 64 编码。

如果输出 LDIF 的值包含 LDIF 语法中无法存在的特殊字符,则输出工具必须使用 Base 64 编码功能。这就是为什么必须对包含嵌入换行符的值进行编码的原因。但是工具不限于仅在绝对必要时使用编码功能,它们可以出于任何原因使用它,包括例如为了将长值分成多行而不在值中引入实际的空格。 SSH 密钥的质量当然就像长字符串一样,几乎没有可以中断的空格。

解析 LDIF 的工具必须识别双冒号并正确解码无论出现在何处都编码的值。

答案2

尽管塞拉达给出的答案听起来很合理,但这并不是我的情况的问题。最初,我使用 phpldapadmin 添加了密钥,显然该软件在密钥末尾添加了一些内容,导致触发 base64 编码。我已删除该密钥并使用 webmin 再次添加它,这次密钥以常规纯文本形式返回。

相关内容