38 releases (10 breaking)
Uses new Rust 2024
| 0.12.2 | Jan 26, 2026 |
|---|---|
| 0.12.1 | Dec 5, 2025 |
| 0.12.0 | Nov 19, 2025 |
| 0.9.0 | Jul 16, 2025 |
| 0.1.0 | Nov 30, 2021 |
#358 in Network programming
17,654 downloads per month
Used in 11 crates
(9 directly)
71KB
1.5K
SLoC
async-ssh2-tokio
This library is an asynchronous and easy-to-use high level SSH client library for rust with the tokio runtime. Powered by the rust SSH implementation russh.
Features
- Connect to an SSH Host
- Execute commands on the remote host
- Get the stdout and exit code of the command
Install
[dependencies]
tokio = "1"
async-ssh2-tokio = "0.12.2"
Usage
use async_ssh2_tokio::client::{Client, AuthMethod, ServerCheckMethod};
#[tokio::main]
async fn main() -> Result<(), async_ssh2_tokio::Error> {
// if you want to use key auth, then use following:
// AuthMethod::with_key_file("key_file_name", Some("passphrase"));
// or
// AuthMethod::with_key_file("key_file_name", None);
// or
// AuthMethod::with_key(key: &str, passphrase: Option<&str>)
// if you want to use SSH agent (Unix/Linux only), then use following:
// AuthMethod::with_agent();
let auth_method = AuthMethod::with_password("root");
let mut client = Client::connect(
("10.10.10.2", 22),
"root",
auth_method,
ServerCheckMethod::NoCheck,
).await?;
let result = client.execute("echo Hello SSH").await?;
assert_eq!(result.stdout, "Hello SSH\n");
assert_eq!(result.exit_status, 0);
let result = client.execute("echo Hello Again :)").await?;
assert_eq!(result.stdout, "Hello Again :)\n");
assert_eq!(result.exit_status, 0);
Ok(())
}
Running Tests
- install docker and docker compose
- run shell script
./tests/run_unit_tests.sh
Dependencies
~25–57MB
~1M SLoC