ssh-rs 0.5.0

In addition to encryption library, pure RUST implementation of SSH-2.0 client protocol
Documentation
# ssh-rs ✨

[English]https://github.com/1148118271/ssh-rs/blob/main/README.md  |  [简体中文]https://github.com/1148118271/ssh-rs/blob/main/README_ZH.md

rust实现的ssh2.0客户端。

如果在使用中遇到任何问题,欢迎 [issues](https://github.com/1148118271/ssh-rs/issues)
或者 [PR](https://github.com/1148118271/ssh-rs/pulls) 。

### 连接方式:

#### 1. 密码连接:

```rust
fn main() {
    let session = ssh::create_session()
        .username("ubuntu")
        .password("password")
        .connect("ip:port")
        .unwrap()
        .run_local();
}
```

#### 2. 公钥连接:

```rust
fn main() {
    let session = ssh::create_session()
        .username("ubuntu")
        .password("password")
        .private_key_path("./id_rsa") // 文件地址
        .connect("ip:port")
        .unwrap()
        .run_local();
}    
```

```rust
fn main() {
    let session = ssh::create_session()
        .username("ubuntu")
        .password("password")
        .private_key("rsa_string") // 文件字符串
        .connect("ip:port")
        .unwrap()
        .run_local();
}
```

### 启用全局日志:
本crate现在使用兼容`log`的`tracing` crate记录log
使用下面的代码片段启用log
```rust
use tracing::Level;
use tracing_subscriber::FmtSubscriber;
// this will generate some basic event logs
// a builder for `FmtSubscriber`.
let subscriber = FmtSubscriber::builder()
    // all spans/events with a level higher than INFO (e.g, info, warn, etc.)
    // will be written to stdout.
    .with_max_level(Level::INFO)
    // completes the builder.
    .finish();

tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
```

### 设置全局超时时间:

```rust
ssh::create_session().timeout(Some(std::time::Duration::from_secs(5)));
```

### 使用样例
* 更多使用样例请参考[examples]examples目录

1. [执行单个命令]examples/exec/src/main.rs
2. [通过scp传输文件]examples/scp/src/main.rs
3. [启动一个pty]examples/shell/src/main.rs
4. [运行一个交互式的shell]examples/shell_interactive/src/main.rs
5. [使用非tcp连接]examples/bio/src/main.rs
6. [自行配置密码组]examples/customized_algorithms/src/main.rs


### 算法支持:

#### 1. 密钥交换算法

* `curve25519-sha256`
* `ecdh-sha2-nistp256`

#### 2. 主机密钥算法

* `ssh-ed25519`
* `rsa-sha2-512`
* `rsa-sha2-256`
* `rsa-sha` (features = ["deprecated-rsa-sha1"])
* `ssh-dss` (features = ["deprecated-dss-sha1"])

#### 3. 加密算法

* `chacha20-poly1305@openssh.com`
* `aes128-ctr`
* `aes192-ctr`
* `aes256-ctr`
* `aes128-cbc` (features = ["deprecated-aes-cbc"])
* `aes192-cbc` (features = ["deprecated-aes-cbc"])
* `aes256-cbc` (features = ["deprecated-aes-cbc"])
* `3des-cbc` (features = ["deprecated-des-cbc"])

#### 4. MAC算法

* `hmac-sha2-256`
* `hmac-sha2-512`
* `hmac-sha1`

#### 5. 压缩算法

* `none`
* `zlib` (behind feature "zlib")

---

#### ☃️ 会继续添加其它算法。