makiko 0.2.5

Asynchronous SSH client library in pure Rust
Documentation
---
title: Tutorial
layout: page
has_children: true
---

# {{ page.title }}

Makiko is an asynchronous SSH client library for Rust. It gives you a lot of control over the SSH connection, but this means that it is quite low-level.

In this tutorial, we will connect to a server, authenticate with a password or a public key, execute a command and open a tunnel. I will assume that you know [Rust][rust], have some experience with [Tokio][tokio] and have used SSH previously.

[rust]: https://www.rust-lang.org/
[tokio]: https://tokio.rs/

## The code

If you want to follow along with the tutorial, create a new Rust project using Cargo:

```
$ cargo new hello_makiko
$ cd hello_makiko
```

And add the dependencies to Makiko and Tokio into your `Cargo.toml`:

```toml
[dependencies]
makiko = "0.2"
tokio = {version = "1.25", features = ["full"]}
```

You can also find complete code for each chapter in this tutorial [in the `examples/` directory][examples] in the Makiko repository.

[examples]: https://github.com/honzasp/makiko/tree/master/examples

In the next chapter, we will start writing the code in `src/main.rs`.

{% include tutorial_next.html link="tutorial/1-connect.md" title="Connecting to the server" %}