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
andlibssh
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 thelibssh
library for SSH connections.libssh2
: The default backend, using thelibssh2
library for SSH connections.
Each backend can be built with the vendored version, using the vendored feature instead:
libssh-vendored
: Build thelibssh
backend with the vendored version of the library.libssh2-vendored
: Build thelibssh2
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
: enablefind()
method on client (enabled by default)no-log
: disable logging. By default, this library will log via thelog
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. - LibSsh2
Session libssh2
- An implementation of
SshSession
using libssh2 as the backend. - LibSsh
Session libssh
- An implementation of
SshSession
using libssh as the backend. - ScpFs
- SCP “filesystem” client
- SftpFs
- Sftp “filesystem” client
- SshConfig
Parse Rule - The parsing mode
- SshOpts
- Ssh options; used to build and configure SCP/SFTP client.
Enums§
- Method
Type KeyMethod
method type for SSH key exchange.- SshAgent
Identity - Ssh agent identity
Traits§
- SshKey
Storage - This trait must be implemented in order to use ssh keys for authentication for sftp/scp.
- SshSession
- SSH session trait.