我正在使用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'})
答案 0 :(得分:1)
这很可能是因为Diffie-Hellman密钥交换和RSA公钥认证所需的modular exponentiation操作在Python字节码解释器(如纯Python Paramiko)中要慢几个数量级。高度优化的OpenSSH使用的编译本机二进制文件。