我使用的是 sshd 通过选项调用的自定义密钥验证程序,而不是服务器上传统的authorized_keys 文件AuthorizedKeysCommand
。在 sshd_config 中,我可以指定应将用户的公钥作为参数提供给此命令,如下所示:
AuthorizedKeysCommand /path/to/verifier %k
Run Code Online (Sandbox Code Playgroud)
问题是密钥编码了大量附加数据,因此可能非常大。如果它大于大约 4135 字节,sshd 在扩展%k
令牌时会记录一个致命错误:
sshd[5914]: fatal: percent_expand: string too long
Run Code Online (Sandbox Code Playgroud)
我一直在梳理源代码,percent_expand
但没有看到任何地方string too long
可能会遇到此错误。代币大小似乎有某种限制,但它是什么呢?它是在哪里定义的?
anx*_*anx 13
您使用的是较旧的 OpenSSH 版本,该版本恰好将整个扩展缓冲区限制为 4096 个八位位组。更新到 8.1 以上,无论如何你都应该更新。
您在源代码中找不到的消息已在提交中删除switch percent_expand() to use sshbuf instead of a limited fixed buffer
- 请参阅OpenSSH-portable和OpenBSD 上游
归档时间: |
|
查看次数: |
1569 次 |
最近记录: |