Crate remotefs_ssh

Crate remotefs_ssh 

Source
Expand description

§remotefs-ssh

remotefs-ssh is a client implementation for remotefs, providing support for the SCP/SFTP protocols.

§Get started

First of all you need to add remotefs and the client to your project dependencies:

remotefs = "^0.3"
remotefs-ssh = "^0.7"

The library supports multiple ssh backends. Currently libssh2 and libssh are supported.

By default the library is using libssh2.

§Available backends

Each backend can be set as a feature in your Cargo.toml. Multiple backends can be enabled at the same time.

  • libssh: An alternative backend, using the libssh library for SSH connections.
  • libssh2: The default backend, using the libssh2 library for SSH connections.

Each backend can be built with the vendored version, using the vendored feature instead:

  • libssh-vendored: Build the libssh backend with the vendored version of the library.
  • libssh2-vendored: Build the libssh2 backend with the vendored version of the library.

If the vendored feature is NOT provided, you will need to have the corresponding system libraries installed on your machine.

§Other features

these features are supported:

  • find: enable find() method on client (enabled by default)
  • no-log: disable logging. By default, this library will log via the log crate.

§Example

Here is a basic usage example, with the Sftp client, which is very similiar to the Scp client.

Both the SftpFs and ScpFs constructors are respectively SftpFs::libssh2 and SftpFs::libssh accordingly to the enabled backends.

// import remotefs trait and client
use remotefs::RemoteFs;
use remotefs_ssh::{SshConfigParseRule, SftpFs, SshOpts};
use std::path::Path;

let opts = SshOpts::new("127.0.0.1")
    .port(22)
    .username("test")
    .password("password")
    .config_file(Path::new("/home/cvisintin/.ssh/config"), ParseRule::STRICT);

let mut client = SftpFs::libssh2(opts);

// connect
assert!(client.connect().is_ok());
// get working directory
println!("Wrkdir: {}", client.pwd().ok().unwrap().display());
// change working directory
assert!(client.change_dir(Path::new("/tmp")).is_ok());
// disconnect
assert!(client.disconnect().is_ok());

Structs§

KeyMethod
Ssh key method. Defined by MethodType (see ssh2 docs) and the list of supported algorithms.
LibSsh2Sessionlibssh2
An implementation of SshSession using libssh2 as the backend.
LibSshSessionlibssh
An implementation of SshSession using libssh as the backend.
ScpFs
SCP “filesystem” client
SftpFs
Sftp “filesystem” client
SshConfigParseRule
The parsing mode
SshOpts
Ssh options; used to build and configure SCP/SFTP client.

Enums§

MethodType
KeyMethod method type for SSH key exchange.
SshAgentIdentity
Ssh agent identity

Traits§

SshKeyStorage
This trait must be implemented in order to use ssh keys for authentication for sftp/scp.
SshSession
SSH session trait.