This is a WIP pull request for new libssh2 based clients, created to give visibility on this work in progress.
Motivation for creating new libssh2 clients as opposed to continuing with paramiko:
Native code extension dependency
Features of the new clients:
Features in paramiko not present in libssh2 at this time of writing:
The intention is to provide both the existing paramiko and new libssh2 based clients (both parallel and single clients), allowing users to choose which to use depending on requirements.
New Python wrapper for libssh2 has been written from scratch as ssh2-python and available as a stand alone library. It implements vast majority of the libssh2 API including all server side features. A new from scratch library using Cython including a C-API layer was preferred to having to extensively modify pylibssh2 (hand crafted C), along with some issues found in it.
ssh2-python is mostly feature complete at this stage with support up to latest libssh2 release and includes binary wheels as well as system packages.
Implications to users and package maintainers
Contributions are most welcome and highly encouraged!
Feel free to contribute either on this here branch or at ssh2-python.
The libssh2 clients in this branch are currently usable for testing purposes only.
…t use hardcoded name. Improved logic of finished function and get_output
… Added programmatic public key authentication to libssh2 client. Updated libssh2 client. Added libssh2 client tests and parallel client tests based on libssh2.
…sh server start to wait for port to be opened
Updated ssh2 client for new API. Updated ssh2 client tests.
Updated ssh2 client. Updated setup.py
… be sub-class of it. Updated embedded openssh server to take listen IP parameter and be able to handle starting multiple servers at same time. Updated ssh2 client to handle encoding, sudo, shell, allow agent and timeout parameters and to handle authentication, session and connection errors on session startup/auth. Added SessionError exception. Updated libssh2 parallel client integration tests to cover all currently supported functionality of the libssh2 based client.
PEP8 and cleanups for ssh2 parallel and single clients. Re-enabled travis tests for all clients.
Updated native select function, parallel ssh2 client test cleanups.
Updated base pssh module and paramiko parallel client. Enabled parallel SFTP operation tests for ssh2 parallel client. Added SFTP exceptions for ssh2 clients. Updated native functions. Updated embedded openssh server.
@@ Coverage Diff @@ ## master #86 +/- ## ========================================== + Coverage 89.63% 92.41% +2.77% ========================================== Files 8 11 +3 Lines 444 844 +400 ========================================== + Hits 398 780 +382 - Misses 46 64 +18
… by themselves. Updated changelog.