#sftp #async #multiplex #api-bindings #ssh

openssh-sftp-client-lowlevel

Lowlevel utilities to communicate with openssh sftp server

12 releases (6 breaking)

0.7.2 Jul 14, 2025
0.7.1 Nov 6, 2024
0.7.0 Aug 10, 2024
0.6.0 Nov 16, 2023
0.1.0 Jul 9, 2022

#1595 in Network programming

Download history 28647/week @ 2025-10-14 26640/week @ 2025-10-21 26220/week @ 2025-10-28 29377/week @ 2025-11-04 26910/week @ 2025-11-11 55118/week @ 2025-11-18 20686/week @ 2025-11-25 28822/week @ 2025-12-02 33266/week @ 2025-12-09 38988/week @ 2025-12-16 15697/week @ 2025-12-23 14417/week @ 2025-12-30 21978/week @ 2026-01-06 15528/week @ 2026-01-13 9999/week @ 2026-01-20 9654/week @ 2026-01-27

61,484 downloads per month
Used in 15 crates (via openssh-sftp-client)

MIT license

120KB
2.5K SLoC

This crate provides a set of APIs to access the remote filesystem using the sftp protocol and is implemented in pure Rust.

It supports sending multiple requests concurrently using WriteEnd (it can be WriteEnd::cloned), however receiving responses have to be done sequentially using ReadEnd::read_in_one_packet.

To create WriteEnd and ReadEnd, simply pass the stdin and stdout of the sftp-server launched at remote to connect.

This crate supports all operations supported by sftp v3, in additional to the following extensions:


openssh-sftp-client

Rust

crate.io downloads

crate.io version

docs

openssh-sftp-client, implements sftp v3 according to openssh-portable/sftp-client.c in rust using tokio and serde.

It exposes highlevel async APIs that models closely after std::fs that are easy to use.

Extensions

This crate support the following extensions:

  • limits
  • expand path
  • fsync
  • hardlink
  • posix rename
  • copy-data

How to run tests

For macOS, please install latest rsync from homebrew.

./run_tests.sh

Dependencies

~3.5–5MB
~85K SLoC