2012-05-14 38 views
2

我使用paramiko通过ssh运行一些命令。我注意到paramiko需要2-3秒来打开连接,而命令行ssh客户端几乎是即时的。为什么paramiko连接比openssh客户端更慢?

使用一些打印,我发现的关键点是Transport.auth_publickey(它使用发现〜/ .ssh/id_dsa)。这与命令行ssh使用的身份验证方法相同,那么为什么paramiko运行速度会更慢?

我使用连接的代码非常简单:

ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect('myhostname', **{'username': 'root'}) 
+0

看来paramiko是用纯python编写的。如果这一步骤是计算密集型的,它可能比等效的C函数慢50倍。 – ascobol

回答

1

这很可能是因为modular exponentiation操作所需既为Diffie-Hellman密钥交换和RSA公钥认证是订单相比于OpenSSH使用的经过严格优化的编译本机二进制文件,Python字节码解释器(如纯Python Paramiko)的速度要慢一些。