
Asyncssh – Python Asyncio Client/Server Implementation of SSHv2 Protocol - joshbaptiste
https://github.com/ronf/asyncssh
======
nchammas
As Jeff and I noted on Reddit [0], the author of AsyncSSH, Ron, is very
responsive and his work is high quality.

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...](https://www.reddit.com/r/Python/comments/41zycz/asyncssh_asynchronous_ssh_for_python/)

[1]
[https://github.com/ronf/asyncssh/blob/master/docs/changes.rs...](https://github.com/ronf/asyncssh/blob/master/docs/changes.rst#release-140-17-jan-2016)

------
eeZi
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!

------
therein
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.

------
alexchamberlain
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.

~~~
Lukasa
There's already lots of this. That's basically what Twisted is, for example.

------
dom96
Nice! But I wonder about the example in the readme, why the 'yield from'?
Doesn't Python support 'await' as an alias for that nowadays?

~~~
nchammas
`await` is Python 3.5+. AsyncSSH is compatible with Python 3.4+.

------
baudehlo
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.

~~~
dijit
I checked the source and I don't see any references to openssl.

that doesn't mean that it wont get pulled in as a dependency somewhere else.

~~~
sciurus
It uses
[https://cryptography.io/en/latest/](https://cryptography.io/en/latest/) , the
origin of which is described at
[https://lwn.net/Articles/595790/](https://lwn.net/Articles/595790/) . Under
the hood that uses OpenSSL.

------
131hn
Great job ! I could not resist to think & share
[https://github.com/mscdex/ssh2](https://github.com/mscdex/ssh2) < SSH2
client/server implementation in nodejs (natural async flow) > piece of art

------
emmelaich
Looks great.

FWIW, [https://pypi.python.org/pypi/parallel-
ssh](https://pypi.python.org/pypi/parallel-ssh) will work with Python2; also
does not use threads or processes.

