You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
distant/distant-ssh2
Chip Senkbeil 2122a5ba39
Bump to v0.15.1
3 years ago
..
src Remove dns resolution for ssh session and add disclaimer to distant session about dns resolution 3 years ago
tests Update wezterm-ssh dep to 0.2.0, fix ssh -> distant session, refactor session to have optional details included 3 years ago
Cargo.toml Bump to v0.15.1 3 years ago
README.md Bump to v0.15.0 release and add readme for distant-ssh2 3 years ago

README.md

distant ssh2

Crates.io Docs.rs Rustc 1.51.0

Library provides native ssh integration into the distant binary.

🚧 (Alpha stage software) This library is in rapid development and may break or change frequently! 🚧

Details

The distant-ssh2 library supplies functionality to

Installation

You can import the dependency by adding the following to your Cargo.toml:

[dependencies]
distant-ssh2 = "0.15"

Examples

Below is an example of connecting to an ssh server and producing a distant session that uses ssh without a distant server binary:

use distant_ssh2::Ssh2Session;

// Using default ssh session arguments to establish a connection
let mut ssh_session = Ssh2Session::connect("example.com", Default::default()).expect("Failed to connect");

// Authenticating with the server is a separate step
// 1. You can pass defaults and authentication and host verification will
//    be done over stderr
// 2. You can provide your own handlers for programmatic engagement
ssh_session.authenticate(Default::default()).await.expect("Failed to authenticate");

// Convert into an ssh client session (no distant server required)
let session = ssh_session.into_ssh_client_session().await.expect("Failed to convert session");

Below is an example of connecting to an ssh server and producing a distant session that spawns a distant server binary and then connects to it:

use distant_ssh2::Ssh2Session;

// Using default ssh session arguments to establish a connection
let mut ssh_session = Ssh2Session::connect("example.com", Default::default()).expect("Failed to connect");

// Authenticating with the server is a separate step
// 1. You can pass defaults and authentication and host verification will
//    be done over stderr
// 2. You can provide your own handlers for programmatic engagement
ssh_session.authenticate(Default::default()).await.expect("Failed to authenticate");

// Convert into a distant session, which involves spawning a distant server
// using the current ssh connection and then establishing a new connection
// to the distant server
//
// This takes in `IntoDistantSessionOpts` to specify the server's bin path,
// arguments, timeout, and whether or not to spawn using a login shell
let session = ssh_session.into_distant_session(Default::default()).await.expect("Failed to convert session");

License

This project is licensed under either of

Apache License, Version 2.0, (LICENSE-APACHE or apache-license) MIT license (LICENSE-MIT or mit-license) at your option.