我没有使用服务器上传统的 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 上游