使用paramiko进行缓慢的公钥认证

时间:2012-05-14 17:54:37

标签: python paramiko ssh-keys

我正在使用paramiko通过ssh连接到远程服务器。使用公钥进行身份验证时,性能很慢(约90秒)。以下是相关的日志记录输出:

2012-05-14 17:37:21,378 Ciphers agreed: local=aes128-ctr, remote=aes128-ctr 
2012-05-14 17:37:21,378 using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes128-ctr, remote aes128-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none 
2012-05-14 17:37:21,481 Switch to new keys ... 
2012-05-14 17:37:21,483 Adding ssh-rsa host key for 10.12.34.56: 8a05c68a0707a9fad19290c22542a338 
2012-05-14 17:37:21,485 Trying discovered key 3793c7b9c500f52c12e190e92e21713f in /home/david/.ssh/id_rsa 
2012-05-14 17:37:21,513 userauth is OK 
2012-05-14 17:38:54,370 Authentication (publickey) successful!

请注意最后两行日志输出之间的延迟。当使用ssh从同一用户和远程服务器的命令行连接时,连接是即时的。是什么原因造成延误?

2 个答案:

答案 0 :(得分:3)

pycrypto>=2.5非常慢。降级到pycrypto==2.4.1后,我看到了25倍的提升。

答案 1 :(得分:0)

经过大量的实验,似乎延迟与密钥的长度有关。我使用的第一把钥匙是4096位。当我切换到较短的(2048位)密钥时,验证所需的时间量急剧下降(<2秒)。