OpenSSH 服务器是否有任何配置来禁止弱(例如<2048 位)RSA 密钥?我知道PubkeyAccetedAlgorithms
它可以禁止特定的密钥类型,包括。rsa-sha2
,作为一个整体。
答案1
我看不到它是运行时可配置的,但您可以更改SSH_RSA_MINIMUM_MODULUS_SIZE
in的编译时定义sshkey.h
并重新编译:
#define SSH_RSA_MINIMUM_MODULUS_SIZE 1024
到
#define SSH_RSA_MINIMUM_MODULUS_SIZE 2048
要么就是这样,要么就不要安装较短的密钥。authorized_keys
至少如果我们接受编码密钥的长度作为实际密钥长度的指示符,则可以扫描用户的文件以查找比该长度更短的密钥。
2048 位 RSA 密钥的编码似乎有 372 个字符长,因此类似这样的内容可能会匹配较短的密钥:
grep -E 'ssh-rsa [a-zA-Z0-9+/=]{,371}( |$)' file...
答案2
这RequiredRSASize
选项被添加到OpenSSH 9.1,于 2022 年 10 月 4 日发布:
ssh(1)、sshd(8):添加RequiredRSASize指令以设置最小RSA密钥长度。对于 sshd(8) 中的用户身份验证和主机身份验证,低于此长度的密钥将被忽略。
如果服务器提供的 RSA 密钥低于此限制,ssh(1) 将终止连接,因为 SSH 协议不包括重试失败的密钥交换的功能。