Portable SSH client and server library

Thrussh is the first Rust SSH library. The only non-Rust part is the crypto backend (handled by This means that this library will never be subject to buffer overruns, double frees, etc. It is designed to work on any platform, and to work with asynchronous IO.

This also allows it to be as fast as others, since less time is spent on checking memory allocations (compilers do that better than humans), and more time is spent on performance. Also, contrarily to others, Thrussh uses no Unix-specific features, which means it’s Windows-compatible.


The documentation is on

Get it!

See the documentation of, which includes examples for the latest version.

Also, the code is accessible using Pijul:

pijul clone

Use of unsafe

Thrussh uses no unsafe blocks at all, although external libraries use them:

  • ring calls assembly and C code.

  • Thrussh uses the cryptovec crate, which uses malloc and free from libc.



The name comes from thrushes, a family of birds to which for instance blackbirds belong (although there are other meanings of this word).

Image by SonNy cZ

Code of conduct

The code of conduct for contributing to this project is the same as Rust’s. All contributions will be released under the same license as Thrussh itself, the Apache-2.0 license. Moreover, please do not attempt to report any vulnerability in this project privately to anybody.

The only place to report vulnerabilities is the Thrussh repository on the Nest.

This library was written in Finland (at Aalto University).