2

我正在使用 paramiko 通过 ssh 运行一些命令。我注意到 paramiko 需要 2-3 秒来打开一个连接,而命令行 ssh 客户端几乎是即时的。

使用一些打印,我发现症结是 Transport.auth_publickey(它使用的是发现的 ~/.ssh/id_dsa)。这与命令行 ssh 使用的身份验证方法相同,那么为什么 paramiko 运行得更慢呢?

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

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

1 回答 1

1

这很可能是因为Diffie-Hellman 密钥交换和 RSA 公钥认证所需的模幂运算在 Python 字节码解释器(如在纯 Python Paramiko 中)中比经过高度优化的编译原生二进制文件慢几个数量级。 OpenSSH 使用。

于 2013-10-05T10:11:53.630 回答