Sample code for 30+ languages & platforms
Rust

Open an SSH Session Channel

See more SSH Examples

Demonstrates the Chilkat Ssh.OpenSessionChannel method, which opens a new SSH session channel. It takes no arguments and returns the channel number, or -1 on failure. The transport must already be connected and authenticated.

Background: SSH multiplexes independent channels over one authenticated connection, and a session channel is the one used to run a command, start a shell, or invoke a subsystem. Opening the channel is only the container — nothing runs until you follow it with an exec, shell, or subsystem request. Always test for a negative return rather than assuming success.

Chilkat Rust Downloads

Rust

// Demonstrates the Ssh.OpenSessionChannel method, which opens a new SSH session channel.  It
// takes no arguments and returns the channel number, or -1 on failure.  The transport must
// already be connected and authenticated.

let ssh = chilkat::Ssh::new();

let ssh_port = 22;
if ssh.connect("ssh.example.com", ssh_port).is_err() {
    println!("{}", ssh.last_error_text());
    return;
}

// Normally you would not hard-code the password in source.  You should instead obtain it
// from an interactive prompt, environment variable, or a secrets vault.
let password = "mySshPassword".to_string();

if ssh.authenticate_pw("mySshLogin", &password).is_err() {
    println!("{}", ssh.last_error_text());
    return;
}

// Open a session channel.  A negative return value indicates failure.
let channel_num = ssh.open_session_channel();
if channel_num < 0 {
    println!("{}", ssh.last_error_text());
    return;
}

println!("Opened session channel: {}", channel_num);

// Opening the channel does not start a shell or command -- send an exec, shell, or subsystem
// request next.

ssh.disconnect();