OpenSSH 可以从 % 标记扩展的最大字符串是多少?

OpenSSH 可以从 % 标记扩展的最大字符串是多少?

我没有使用服务器上传统的 authorized_keys 文件,而是使用 sshd 通过以下方式调用的自定义密钥验证器:AuthorizedKeysCommand选项。在 sshd_config 中,我可以指定此命令应将用户的公钥作为参数输入,如下所示:

AuthorizedKeysCommand /path/to/verifier %k

问题在于密钥编码了大量附加数据,因此可能非常大。如果密钥大于 4135 字节左右,sshd 会在扩展​​令牌时记录致命错误%k

sshd[5914]: fatal: percent_expand: string too long

我一直在梳理源代码percent_expand我没有看到任何地方可能会遇到此错误。似乎string too long对令牌大小有某种限制,但它是什么?它在哪里定义?

答案1

您使用的是较旧的 OpenSSH 版本,该版本恰好将整个扩展缓冲区限制为 4096 个八位字节。更新到 8.1 以上版本,无论如何你都应该

您在源代码中找不到的消息已被删除switch percent_expand() to use sshbuf instead of a limited fixed buffer- 请参阅OpenSSH-便携式OpenBSD 上游

相关内容