我正在我的 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 再次添加它,这次密钥以常规纯文本形式返回。