Russh
Low-level Tokio SSH2 client and server implementation.
Examples: simple client, interactive PTY client, server, SFTP client, SFTP server.
This is a fork of Thrussh by Pierre-Étienne Meunier.
✨ = added in Russh
- More panic safety ✨
async_traitsupport ✨direct-tcpip(local port forwarding)forward-tcpip(remote port forwarding) ✨direct-streamlocal(local UNIX socket forwarding, client only) ✨- Ciphers:
chacha20-poly1305@openssh.comaes256-gcm@openssh.com✨aes256-ctr✨aes192-ctr✨aes128-ctr✨
- Key exchanges:
curve25519-sha256@libssh.orgdiffie-hellman-group1-sha1✨diffie-hellman-group14-sha1✨diffie-hellman-group14-sha256✨diffie-hellman-group16-sha512✨ecdh-sha2-nistp256✨ecdh-sha2-nistp384✨ecdh-sha2-nistp521✨
- MACs:
hmac-sha1✨hmac-sha2-256✨hmac-sha2-512✨hmac-sha1-etm@openssh.com✨hmac-sha2-256-etm@openssh.com✨hmac-sha2-512-etm@openssh.com✨
- Host keys and public key auth:
ssh-ed25519rsa-sha2-256rsa-sha2-512ssh-rsa✨ecdsa-sha2-nistp256✨ecdsa-sha2-nistp384✨ecdsa-sha2-nistp521✨
- Authentication methods:
passwordpublickeykeyboard-interactivenone- OpenSSH certificates (client only ✨)
- Dependency updates
- OpenSSH keepalive request handling ✨
- OpenSSH agent forwarding channels ✨
- OpenSSH
server-sig-algsextension ✨ openssldependency is optional ✨
Safety
deny(clippy::unwrap_used)deny(clippy::expect_used)deny(clippy::indexing_slicing)deny(clippy::panic)- Exceptions are checked manually
Panics
- When the Rust allocator fails to allocate memory during a CryptoVec being resized.
Unsafe code
cryptovecusesunsafefor faster copying, initialization and binding to native API.
Ecosystem
- russh-sftp - server-side and client-side SFTP subsystem support for
russh- seerussh/examples/sftp_server.rsorrussh/examples/sftp_client.rs. - async-ssh2-tokio - simple high-level API for running commands over SSH.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!