Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Eugeny/russh
Rust SSH client & server library
https://github.com/Eugeny/russh
native rust ssh ssh-client ssh-client-library ssh-server ssh-server-library
Last synced: about 2 months ago
JSON representation
Rust SSH client & server library
- Host: GitHub
- URL: https://github.com/Eugeny/russh
- Owner: Eugeny
- Created: 2022-02-07T22:04:56.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-18T07:30:45.000Z (2 months ago)
- Last Synced: 2024-07-18T09:21:44.242Z (2 months ago)
- Topics: native, rust, ssh, ssh-client, ssh-client-library, ssh-server, ssh-server-library
- Language: Rust
- Homepage: https://docs.rs/russh
- Size: 1.14 MB
- Stars: 798
- Watchers: 10
- Forks: 82
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE-2.0.txt
Awesome Lists containing this project
README
# Russh
[![Rust](https://github.com/warp-tech/russh/actions/workflows/rust.yml/badge.svg)](https://github.com/warp-tech/russh/actions/workflows/rust.yml)
[![All Contributors](https://img.shields.io/badge/all_contributors-35-orange.svg?style=flat-square)](#contributors-)Low-level Tokio SSH2 client and server implementation.
Examples: [simple client](russh/examples/client_exec_simple.rs), [interactive PTY client](russh/examples/client_exec_interactive.rs), [server](russh/examples/echoserver.rs), [SFTP client](russh/examples/sftp_client.rs), [SFTP server](russh/examples/sftp_server.rs).
This is a fork of [Thrussh](https://nest.pijul.com/pijul/thrussh) by Pierre-Étienne Meunier.
> ✨ = added in Russh
* [More panic safety](https://github.com/warp-tech/russh#safety) ✨
* `async_trait` support ✨
* `direct-tcpip` (local port forwarding)
* `forward-tcpip` (remote port forwarding) ✨
* `direct-streamlocal` (local UNIX socket forwarding, client only) ✨
* Ciphers:
* `[email protected]`
* `[email protected]` ✨
* `aes256-ctr` ✨
* `aes192-ctr` ✨
* `aes128-ctr` ✨
* `aes256-cbc` ✨
* `aes192-cbc` ✨
* `aes128-cbc` ✨
* Key exchanges:
* `[email protected]`
* `diffie-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` ✨
* `[email protected]` ✨
* `[email protected]` ✨
* `[email protected]` ✨
* 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 (client only ✨)
* Dependency updates
* OpenSSH keepalive request handling ✨
* OpenSSH agent forwarding channels ✨
* OpenSSH `server-sig-algs` extension ✨
* `openssl` dependency 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
* `cryptovec` uses `unsafe` for faster copying, initialization and binding to native API.
## Ecosystem
* [russh-sftp](https://crates.io/crates/russh-sftp) - server-side and client-side SFTP subsystem support for `russh` - see `russh/examples/sftp_server.rs` or `russh/examples/sftp_client.rs`.
* [async-ssh2-tokio](https://crates.io/crates/async-ssh2-tokio) - simple high-level API for running commands over SSH.## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Mihir Samdarshi
📖
Connor Peet
💻
KVZN
💻
Adrian Müller (DTT)
💻
Simone Margaritelli
💻
Joe Grund
💻
AspectUnk
💻
Simão Mata
💻
Mariotaku
💻
yorkz1994
💻
Ciprian Dorin Craciun
💻
Eric Milliken
💻
Swelio
💻
Joshua Benz
💻
Jan Holthuis
🛡️
mateuszkj
💻
Saksham Mittal
💻
Lucas Kent
💻
Raphael Druon
💻
Maya the bee
💻
Milo Mirate
💻
George Hopkins
💻
Åke Amcoff
💻
Brendon Ho
💻
Samuel Ainsworth
💻
Sherlock Holo
💻
Alessandro Ricottone
💻
T0b1-iOS
💻
Shoaib Merchant
💻
Michael Gleason
💻
Ana Gelez
💻
Tom König
💻
Pierre Barre
💻
Jean-Baptiste Skutnik
💻
Adam Chappell
💻
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!