---
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" %}