[![Crates.io](https://img.shields.io/crates/v/openssh.svg)](https://crates.io/crates/openssh) [![Documentation](https://docs.rs/openssh/badge.svg)](https://docs.rs/openssh/) [![Codecov](https://codecov.io/github/openssh-rust/openssh/coverage.svg?branch=master)](https://codecov.io/gh/openssh-rust/openssh) Scriptable SSH through OpenSSH. This crate wraps the OpenSSH remote login client (`ssh` on most machines), and provides a convenient mechanism for running commands on remote hosts. Since all commands are executed through the `ssh` command, all your existing configuration (e.g., in `.ssh/config`) should continue to work as expected. The library's API is modeled closely after that of [`std::process::Command`], since `ssh` also attempts to make the remote process seem as much as possible like a local command. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. ### Run integration tests Requires `docker` and [`cargo-hack`]. Check [getting Docker guide](https://docs.docker.com/get-docker/) on how to install docker, and use `cargo install cargo-hack` to install [`cargo-hack`]. ``` ./run_ci_tests.sh ``` It will create a container which runs sshd, setup ssh-agent, and environment variables that are required to run the integration tests. It will also test different combination of feature flags to ensure they all compile without error. [`cargo-hack`]: https://github.com/taiki-e/cargo-hack ### Build documentation Requires nightly cargo. To install nightly cargo, run `rustup toolchain install nightly`. ``` ./build_doc.sh ```