2012-05-14 7 views
2

Я использую paramiko для выполнения некоторых команд по ssh. Я заметил, что парамико занимает 2-3 секунды, чтобы открыть соединение, а клиент командной строки ssh почти мгновен.Почему парамико подключается медленнее, чем клиент 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 написан на чистом питоне. Если этот шаг является вычислительно интенсивным, он может быть в 50 раз медленнее, чем эквивалентная функция C. – ascobol

ответ

1

Это, скорее всего, потому что modular exponentiation операции необходимы как для Диффи-Хеллмана обмена ключами и аутентификации RSA с открытым ключом являются заказы меньше, чем в интерпретаторе байт-кода Python (как в чистом Python Paramiko) по сравнению с сильно оптимизированным скомпилированным родным двоичным файлом, который использует OpenSSH.

Смежные вопросы