Rust implementation of ssh2.0 client.
If you encounter any problems in use, welcome issues or PR .
```rust use ssh_rs::{Session, ssh};
fn main() { let mut session: Session = ssh::createsession(); session.setuserandpassword("user", "password"); session.connect("ip:port").unwrap(); } ```
RSA-PKCS#1-PEM
type encrypted files with the encryption format -----BEGIN RSA PRIVATE KEY-----
are supported.```rust use sshrs::{Session, ssh}; use sshrs::key_pair::KeyPairType;
fn main() {
let mut session: Session = ssh::createsession();
// pem format key path -> /xxx/xxx/idrsa
// KeyPairType::SshRsa -> Rsa type algorithm, currently only supports rsa.
session.setuserandkeypair_path("user", "pem format key path", KeyPairType::SshRsa).unwrap();
session.connect("ip:port").unwrap();
}
```
```rust use sshrs::{Session, ssh}; use sshrs::key_pair::KeyPairType;
fn main() { let mut session: Session = ssh::createsession(); // pem format key string: // -----BEGIN RSA PRIVATE KEY----- // xxxxxxxxxxxxxxxxxxxxx // -----END RSA PRIVATE KEY----- // KeyPairType::SshRsa -> Rsa type algorithm, currently only supports rsa. session.setuserandkey_pair("user", "pem format key string", KeyPairType::SshRsa).unwrap(); session.connect("ip:port").unwrap(); } ```
```rust use ssh_rs::{Session, ssh};
fn main() { let mut session: Session = ssh::createsession(); // isenablelog Whether to enable global logging // The default is false(Do not enable) // Can be set as true (enable) session.isenablelog(true); session.setuserandpassword("user", "password"); session.connect("ip:port").unwrap(); } ```
```rust use ssh_rs::{Session, ssh};
fn main() { let mut session: Session = ssh::createsession(); // settimeout // The unit is seconds // The default timeout is 30 seconds session.settimeout(15); session.setuserandpassword("user", "password"); session.connect("ip:port").unwrap(); } ```
```rust use ssh_rs::{ChannelExec, Session, ssh};
fn main() {
let mut session: Session = session();
// Usage 1
let exec: ChannelExec = session.openexec().unwrap();
let vec: Vec
```rust use std::thread::sleep; use std::time::Duration; use ssh_rs::{Channel, ChannelShell, Session, ssh};
fn main() { let mut session: Session = session(); // Usage 1 let mut shell: ChannelShell = session.openshell().unwrap(); runshell(&mut shell); // Usage 2 let channel: Channel = session.openchannel().unwrap(); let mut shell = channel.openshell().unwrap(); run_shell(&mut shell); // Close channel. shell.close().unwrap(); // Close session. session.close().unwrap(); }
fn runshell(shell: &mut ChannelShell) { sleep(Duration::frommillis(500)); let vec = shell.read().unwrap(); println!("{}", String::from_utf8(vec).unwrap());
shell.write(b"ls -all\n").unwrap();
sleep(Duration::from_millis(500));
let vec = shell.read().unwrap();
println!("{}", String::from_utf8(vec).unwrap());
} ```
```rust use ssh_rs::{Channel, ChannelScp, Session, ssh};
fn main() { let mut session: Session = session(); // Usage 1 let scp: ChannelScp = session.open_scp().unwrap(); scp.upload("local path", "remote path").unwrap();
let scp: ChannelScp = session.open_scp().unwrap();
scp.download("local path", "remote path").unwrap();
// Usage 2
let channel: Channel = session.open_channel().unwrap();
let scp: ChannelScp = channel.open_scp().unwrap();
scp.upload("local path", "remote path").unwrap();
let channel: Channel = session.open_channel().unwrap();
let scp: ChannelScp = channel.open_scp().unwrap();
scp.download("local path", "remote path").unwrap();
session.close().unwrap();
}
```
curve25519-sha256
ecdh-sha2-nistp256
ssh-ed25519
ssh-rsa
chacha20-poly1305@openssh.com
aes128-ctr
chacha20-poly1305@openssh.com
aes128-ctr
hmac-sha1
hmac-sha1
none
none