5个稳定版本

1.2.0 2023年9月24日
1.1.0 2023年7月26日
1.0.2 2023年7月19日
1.0.1 2023年7月13日
1.0.0 2023年7月12日

#925 in 密码学

21 每月下载量
2 个crate中使用 (via rustgit)

MIT 协议

71KB
1.5K SLoC

纯Rust SSH 2.0客户端

示例:从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 = "[email protected]";
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();

支持的SSH算法

  • 密钥交换:curve25519-sha256
  • 公钥:ssh-ed25519
  • 加密:aes256-ctr
  • 消息认证码:hmac-sha2-256
  • 压缩:无

未来改进

  • 支持no_std
  • 允许多个命令同时运行(API变更)
  • 服务器模式

欢迎提交pull request进行这些改进。

依赖

~4MB
~84K SLoC