Crates.io | coolssh |
lib.rs | coolssh |
version | 1.2.0 |
source | src |
created_at | 2023-07-12 22:27:33.731117 |
updated_at | 2023-09-24 12:39:43.539692 |
description | SSH 2.0 Client |
homepage | |
repository | https://github.com/NathanRoyer/coolssh |
max_upload_size | |
id | 914868 |
size | 71,377 |
Pure-rust SSH 2.0 Client
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/keys
let stream = TcpStream::connect("github.com:22").unwrap();
let mut 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();
Feel free to submit pull request for these.