Skip to content

Latest commit

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Pure-rust SSH 2.0 Client

Example: Initiating a fetch from github

use std::net::TcpStream;use coolssh::{create_ed25519_keypair, dump_ed25519_pk_openssh,Connection};let hex_keypair:String = create_ed25519_keypair();println!("Key Pair (private): {}", hex_keypair);let github_account_id = "john.doe@gmail.com";let openssh_encoded_pubkey = dump_ed25519_pk_openssh(&hex_keypair, github_account_id);println!("OpenSSH-Encoded Public Key {}", openssh_encoded_pubkey);// Add the public key to `authorized_keys` on your server// -> https://github.com/settings/keyslet stream = TcpStream::connect("github.com:22").unwrap();letmut conn = Connection::new(stream,("git", hex_keypair.as_str()).into()).unwrap();// set appropriate read timeout (preferably after authentication):
conn.mutate_stream(|stream| {let timeout = std::time::Duration::from_millis(200);
stream.set_read_timeout(Some(timeout)).unwrap()});let env = [];let run = conn.run("git-upload-pack rust-lang/rust.git",&env).unwrap();

Supported SSH Algorithms

  • Key Exchange: curve25519-sha256
  • Public Keys: ssh-ed25519
  • Encryption: aes256-ctr
  • MAC: hmac-sha2-256
  • Compression: none

Future improvements

  • no_std compatibility
  • allow multiple commands to run simultaneously (API change)
  • server mode

Feel free to submit pull request for these.

About

SSH 2.0 Client

Resources

Stars

1 star

Watchers

1 watching

Forks

Used by

Contributors

Languages