This is pretty cool. SSH is a perfect fit for this - in common application scenarios, most time is spent waiting for the remote host.
I like that is supports all of the modern ciphers (Paramiko, in particular, doesn't). It's also mostly feature-complete. Props to the author, this appears to be the work of a single guy!
This is extremely useful to me. Seems like it can be used to secure communications between the server and the client without having to rely on autossh with SSH tunnels.
I think this can be very useful for establishing reverse SSH connections as well. Instead of having autossh keep track of the SSH session and keep it alive, one can spin up a simple script that starts and persists the connection.
Awesome, I'd like to see more network protocols implemented natively in Python. The language implementations are getting better and better, and well, you're waiting for the network anyway... It also means the work together better: 1 event loop means it's easier to reason about the program execution when using multiple protocols together.
My concern with the server side of this would be a bug in OpenSSL (which I assume this uses) could give a hacker access to the memory space of all current connections, a feature the default forking servers don't have to worry about. It's a benefit that helped qmail remain secure for so long.
And yet I say this as a creator of an async SMTP server, so I don't think these days it is that big of an issue.
Great job !
I could not resist to think & share https://github.com/mscdex/ssh2 < SSH2 client/server implementation in nodejs (natural async flow) > piece of art
The library is already pretty feature-complete, and just last week the latest release added ssh-agent client support. [1]
[0] https://www.reddit.com/r/Python/comments/41zycz/asyncssh_asy...
[1] https://github.com/ronf/asyncssh/blob/master/docs/changes.rs...