我正在使用 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'})
最佳答案
这很可能是因为 modular exponentiation与 OpenSSH 使用的经过高度优化的编译 native 二进制文件相比,Diffie-Hellman key 交换和 RSA 公钥身份验证所需的操作在 Python 字节码解释器(如在纯 Python Paramiko 中)中要慢几个数量级。
关于python - 为什么 paramiko 连接速度可能比 openssh 客户端慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584343/