1.1 KiB
Shared SSH client
This library ports v2's Rust SSH transport for the ssh and git CLIs.
It uses standard WASI sockets for TCP and standard WASI HTTP for host-mediated authentication.
It never reads a private-key file or a v2 configuration file.
Session owns key exchange, authentication, exec channels, flow control, and packet protection.
identity::connect obtains a public identity and signs authentication through the host API.
Session::split supplies Git's in-process transport with a reader and a writer.
Session::execute_input sends buffered stdin and captures both output streams and the remote exit status.
Host trust uses $HOME/.ssh/known_hosts, including hashed names, patterns, and revocations.
The protocol supports curve25519-sha256, Ed25519, AES-128-CTR, and HMAC-SHA2, including OpenSSH EtM variants. The inherited TCP defaults use a five-second connection budget and fifteen-second read and write timeouts.
The integration tests in ../ssh/test.nu and ../git/ssh-test.nu use native sshd and a fake signing server.
The fake server keeps its private keys outside the guest preopen.