OpenSSH:基于密钥的授权,最大密钥长度

我使用基于密钥的身份validation访问一些我的服务器的Windows上使用腻子。

它工作完全正常〜3700位密钥,但〜17000位密钥认为在客户端20秒,然后只是说“访问被拒绝”,并要求input密码。

在基于密钥的身份validation中,OpenSSH中是否有任何密钥长度限制或超时?

我明白,使用这样的大键没有太多的实际意义,尤其是当看着这20秒的计算,只是试图解决我所面临的任何问题: – )…

有一次,我查看了OpenSSL的Diffie-Hellman密钥的来源,发现DH密钥的大小有10K的“任意”限制。 我改变了testing的来源,发现工作。 我给作者写了一个bug,他们回复说,这是devise意图,通过使用大量密钥来防止DoS。

在OpenSSH中看到类似的东西并不会让我感到惊讶。

没有在协议中定义的最大密钥大小或超时(或至less没有你会打),但实现可能不支持这样的长键。 对于17kbit RSA密钥,使用私钥处理20秒的时间不会很高。 然后,服务器可能不想在未经authentication的用户上花费太多的计算能力:拒绝非常大的密钥是防范DoS攻击的保护。

对于RSA密钥,目前认为2048比特是合理的; 4096位比必要的高,但通常支持; 除此之外,如果某些程序拒绝密钥,则不应该感到惊讶。

你是否能够在预定的目标系统上生成这样大小的密钥? 您可能会遇到支持的限制。 目前我的Centos系统支持16k的最大值,这对于大量密钥似乎是足够的。 你应该看到最大的,如果你试图去ssh键,如下所示。

[nathan@omni ~]# ssh-keygen -t rsa -b 32768 key bits exceeds maximum 16384 

openssh服务器有一个LoginGraceTime设置。 从手册页:

 The server disconnects after this time if the user has not suc- cessfully logged in. If the value is 0, there is no time limit. The default is 120 seconds. 

如果设置为20秒,这可能是一个限制。

疯狂的猜测:也可能是腻子本身有这个限制,认为如果公钥authentication的客户端处理需要那么长时间,有些事情是错误的。