Files
sausage/userland/ssh-client/README.md
T

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.