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_trait
support β¨direct-tcpip
(local port forwarding)forward-tcpip
(remote port forwarding) β¨direct-streamlocal
(local UNIX socket forwarding, client only) β¨forward-streamlocal
(remote UNIX socket forwarding) β¨- Ciphers:
chacha20-poly1305@openssh.com
aes256-gcm@openssh.com
β¨aes256-ctr
β¨aes192-ctr
β¨aes128-ctr
β¨aes256-cbc
β¨aes192-cbc
β¨aes128-cbc
β¨3des-cbc
β¨
- Key exchanges:
curve25519-sha256@libssh.org
diffie-hellman-group-sha1
β¨diffie-hellman-group1-sha1
β¨diffie-hellman-group14-sha1
β¨diffie-hellman-group-sha256
β¨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-ed25519
rsa-sha2-256
rsa-sha2-512
ssh-rsa
β¨ecdsa-sha2-nistp256
β¨ecdsa-sha2-nistp384
β¨ecdsa-sha2-nistp521
β¨
- Authentication methods:
password
publickey
keyboard-interactive
none
- OpenSSH certificates β¨
- Dependency updates
- OpenSSH keepalive request handling β¨
- OpenSSH agent forwarding channels β¨
- OpenSSH
server-sig-algs
extension β¨ - PPK key format β¨
- Pageant support β¨
AsyncRead
/AsyncWrite
-able channels β¨
deny(clippy::unwrap_used)
deny(clippy::expect_used)
deny(clippy::indexing_slicing)
deny(clippy::panic)
- Exceptions are checked manually
- When the Rust allocator fails to allocate memory during a CryptoVec being resized.
- When
mlock
/munlock
fails to protect sensitive data in memory.
cryptovec
usesunsafe
for faster copying, initialization and binding to native API.
- russh-sftp - server-side and client-side SFTP subsystem support for
russh
- seerussh/examples/sftp_server.rs
orrussh/examples/sftp_client.rs
. - async-ssh2-tokio - simple high-level API for running commands over SSH.
- HexPatch - A binary patcher and editor written in Rust with terminal user interface (TUI).
- Uses
russh::client
andrussh_sftp::client
to allow remote editing of files.
- Uses
- kartoffels - A game where you're given a potato and your job is to implement a firmware for it
- Uses
russh:server
to deliver the game, usingratatui
as the rendering engine.
- Uses
- kty - The terminal for Kubernetes.
- Uses
russh::server
to deliver theratatui
based TUI andrussh_sftp::server
to providescp
based file management.
- Uses
- lapdev - Self-Hosted Remote Dev Environment
- Uses
russh::server
to construct a proxy into your development environment.
- Uses
- medusa - A fast and secure multi protocol honeypot.
- Uses
russh::server
to be the basis of the honyepot.
- Uses
- rebels-in-the-sky - P2P terminal game about spacepirates playing basketball across the galaxy
- Uses
russh::server
to deliver the game, usingratatui
as the rendering engine.
- Uses
- warpgate - Smart SSH, HTTPS and MySQL bastion that requires no additional client-side software
- Uses
russh::server
in addition torussh::client
as part of the smart SSH functionality.
- Uses
- Devolutions Gateway - Establish a secure entry point for internal or external segmented networks that require authorized just-in-time (JIT) access.
- Uses
russh::client
for the web-based SSH client of the standalone web application.
- Uses
- Sandhole - Expose HTTP/SSH/TCP services through SSH port forwarding. A reverse proxy that just works with an OpenSSH client.
- Uses
russh::server
for reverse forwarding connections, local forwarding tunnels, and theratatui
based admin interface.
- Uses
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!