Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
honzasp committed Oct 1, 2022
1 parent 32c2382 commit 2362555
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 15 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ poly1305 = "0.7"
rand = {version = "0.8", features = ["getrandom"]}
rand_0_7 = {version = "0.7", package = "rand"} # because of x25519-dalek
rand_chacha = "0.3"
regex = "1.6"
regex-syntax = "0.6"
regex = {version = "1.6", features = ["std"], default-features = false}
regex-syntax = {version = "0.6", features = [], default-features = false}
rsa = {version = "0.6"}
sha-1 = {version = "0.10", default-features = false}
sha2 = "0.10"
Expand Down
55 changes: 46 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,49 @@

Makiko is an asynchronous SSH client library for Rust.

*This crate is work in progress.* The progress is going to happen on these fronts:

- Compatibility testing with multiple SSH servers.
- Wider range of cryptographic algorithms.
- Tunnels.
- Public key authentication.
- SFTP.
- Documentation (tutorial, explanation).
- Replace `ring` with RustCrypto.
**[Github][github] | [API docs][docs-rs] | [Crate][crates-io]**

[github]: https://github.com/honzasp/makiko
[docs-rs]: https://docs.rs/makiko/latest/makiko
[crates-io]: https://crates.io/crates/makiko

## Features

- SSH protocol 2
- Authentication methods: publickey, password, none
- Shell/exec sessions
- Remote and local tunnels
- Raw SSH channels (low-level API)
- Ciphers: chacha20-poly1305, aes128-gcm, aes256-gcm, aes128-ctr, aes192-ctr,
aes256-ctr, aes128-cbc*, aes192-cbc*, aes256-cbc*
- MACs: hmac-sha2-256-etm, hmac-sha2-512-etm, hmac-sha2-256, hmac-sha2-512,
hmac-sha1-etm*, hmac-sha1*
- Public key algorithms: ssh-ed25519, rsa-sha2-256, rsa-sha2-512,
ecdsa-sha2-nistp256*, ecdsa-sha2-nistp384*, ssh-rsa*
- Key exchange algorithms: curve25519-sha256, diffie-hellman-group14-sha1*,
diffie-hellman-group14-sha256*, diffie-hellman-group16-sha512*,
diffie-hellmann-group18-sha512*
- Crypto from [Rust Crypto][rust-crypto]
- Use your own sockets, spawn your own tasks
- Uses [Tokio][tokio] interfaces (but does not depend on the Tokio runtime)

[rust-crypto]: https://github.com/RustCrypto
[tokio]: https://tokio.rs/

(* Algorithms marked with an asterisk are not enabled by default)

## Low-level

Makiko gives you a lot of control over the SSH connection, it is meant to be a
building block for libraries and advanced applications.

## Contributing

Contributions are welcome! Please contact me ([@honzasp][honzasp]) or open a
pull request.

[honzasp]: https://github.com/honzasp

## License

This software is released into the public domain. Please see [LICENSE](LICENSE).
5 changes: 2 additions & 3 deletions src/client/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -558,9 +558,8 @@ impl Default for ClientConfig {
impl ClientConfig {
/// Default configuration with higher compatibility and lower security.
///
/// Returns a configuration that includes support for legacy crypto, notably SHA-1. None of
/// these algorithms is known to be broken and they should be alright most of the time, but use
/// at your own risk!
/// Returns a configuration that includes support for subpar crypto, notably SHA-1, NIST curves
/// and CBC-mode ciphers. Use at your own risk!
pub fn default_compatible_less_secure() -> ClientConfig {
Self::default().with(|c| {
c.kex_algos.extend_from_slice(&[
Expand Down
1 change: 1 addition & 0 deletions src/kex/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
//! - "diffie-hellman-group14-sha1" ([`DIFFIE_HELLMAN_GROUP14_SHA1`])
//! - "diffie-hellman-group14-sha256" ([`DIFFIE_HELLMAN_GROUP14_SHA256`])
//! - "diffie-hellman-group16-sha512" ([`DIFFIE_HELLMAN_GROUP16_SHA512`])
//! - "diffie-hellman-group18-sha512" ([`DIFFIE_HELLMAN_GROUP18_SHA512`])
use bytes::Bytes;
use derivative::Derivative;
use num_bigint_dig::BigUint;
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! SSH client library.
//! Asynchronous SSH client library for Rust.
//!
//! The entry point for making SSH connections is the [`Client`].
#![allow(clippy::collapsible_if)]
Expand Down

0 comments on commit 2362555

Please sign in to comment.