redb.Route.Sftp
4.2.2
Prefix Reserved
See the version list below for details.
dotnet add package redb.Route.Sftp --version 4.2.2
NuGet\Install-Package redb.Route.Sftp -Version 4.2.2
<PackageReference Include="redb.Route.Sftp" Version="4.2.2" />
<PackageVersion Include="redb.Route.Sftp" Version="4.2.2" />
<PackageReference Include="redb.Route.Sftp" />
paket add redb.Route.Sftp --version 4.2.2
#r "nuget: redb.Route.Sftp, 4.2.2"
#:package redb.Route.Sftp@4.2.2
#addin nuget:?package=redb.Route.Sftp&version=4.2.2
#tool nuget:?package=redb.Route.Sftp&version=4.2.2
redb.Route.Sftp
SFTP transport for redb.Route. Polling consumer and atomic producer via SSH.NET — key/password auth, proxy, idempotency, glob filtering, temp-file upload, chmod, and recursive directory traversal.
Installation
dotnet add package redb.Route.Sftp
Usage
Fluent DSL
using redb.Route.Sftp.Fluent;
// Poll remote directory
From(Sftp.Directory("/uploads")
.Host("sftp.example.com").Port(22)
.Username("user").PrivateKey("/keys/id_rsa")
.Include("*.xml")
.Delay(10000)
.MoveTo("/uploads/archive")
.Recursive()
.Idempotent())
.Log("Downloaded: ${header.CamelFileName}")
.To("direct://process");
// Upload files atomically
From("direct://export")
.To(Sftp.Directory("/outgoing")
.Host("sftp.example.com")
.Username("user").Password("secret")
.TempPrefix(".uploading-")
.Chmod("0644")
.AutoCreate());
// With proxy
From(Sftp.Directory("/data")
.Host("internal-sftp")
.Username("svc")
.Proxy(ProxyTypes.Http, "proxy.corp.net", 8080)
.ProxyAuth("proxy-user", "proxy-pass"))
.To("direct://ingest");
Fluent Builder API
| Category | Methods |
|---|---|
| Connection | .Host(), .Port(), .Username(), .Password(), .PrivateKey(), .UseKeyboardInteractive(), .PreferredAuthentications(), .ServerFingerprint(), .StrictHostKeyChecking(), .KnownHostsFile(), .ConnectionTimeout(), .OperationTimeout(), .KeepAliveInterval(), .BufferSize(), .Compression() |
| Proxy | .Proxy(type, host, port), .ProxyAuth(user, pass) |
| Reconnect | .MaximumReconnectAttempts(), .ReconnectDelay(), .Disconnect() |
| Consumer | .Delay(), .InitialDelay(), .Include(), .Exclude(), .Recursive(), .MaxDepth(), .MinDepth(), .SortBy(), .MaxMessagesPerPoll(), .MinAge(), .MaxAge() |
| Path filters | .AntInclude(), .AntExclude(), .AntFilterCaseSensitive(), .FilterDirectory(), .FilterFile(), .Filter() — see the base package; this is how one session polls named directories out of a partner tree instead of one route per directory |
| Poll backoff | .BackoffMultiplier(), .BackoffIdleThreshold(), .BackoffErrorThreshold(), .BackoffOnFailedExchanges() |
| Post-process | .Noop(), .Delete(), .MoveTo(), .MoveExisting(), .PreMove(), .MoveFailed() |
| Idempotency | .Idempotent(), .DoneFileName() |
| Transfer | .Charset(), .Separator() |
| Producer | .FileExist(), .TempPrefix(), .TempFileName(), .Chmod(), .ChmodDirectory(), .AutoCreate(), .AllowNullBody(), .EagerDeleteTargetFile(), .KeepLastModified(), .Flatten(), .JailStartingDirectory(), .AppendChars() |
Most builder methods accept both constant values and
IExpressionfor runtime resolution via the expression engine.
Part of
redb.Route — ESB & EIP Framework for .NET
Named connection factory
Keep credentials out of the route URI: register a factory in the context registry and reference it by name. A set-but-unknown name fails loud at startup — a typo can never silently fall back to inline URI parameters.
context.AddToRegistry("prod", new SftpConnectionFactory
{
Host = "sftp.partner.com",
Username = "exchange",
PrivateKeyPath = "/secrets/id_ed25519",
});
// sftp://outbox?connectionFactory=prod
Tracing
As every connector built on redb.Route.GenericFile (see the redb.Route.File README): a root Consumer span,
file read sftp, per routed file, none for an empty poll, an error when the route fails; a Producer span per upload,
file write sftp, an error when it fails. RouteEngineOptions.EnableTelemetry = false opens neither.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- redb.Route (>= 4.2.2)
- redb.Route.GenericFile (>= 4.2.2)
- SSH.NET (>= 2026.0.0)
-
net8.0
- redb.Route (>= 4.2.2)
- redb.Route.GenericFile (>= 4.2.2)
- SSH.NET (>= 2026.0.0)
-
net9.0
- redb.Route (>= 4.2.2)
- redb.Route.GenericFile (>= 4.2.2)
- SSH.NET (>= 2026.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.3.0 | 71 | 10/14/2026 |
| 4.2.3 | 86 | 10/8/2026 |
| 4.2.2 | 94 | 10/5/2026 |
| 4.2.0 | 88 | 9/30/2026 |
| 4.1.1 | 99 | 9/25/2026 |
| 4.1.0 | 101 | 9/21/2026 |
| 4.0.1 | 175 | 9/18/2026 |
| 4.0.0 | 111 | 9/11/2026 |
| 3.7.2 | 117 | 8/26/2026 |
| 3.7.1 | 108 | 8/26/2026 |
| 3.6.0 | 120 | 8/13/2026 |
| 3.5.1 | 120 | 8/9/2026 |
| 3.5.0 | 129 | 8/6/2026 |
| 3.4.0 | 116 | 7/27/2026 |
| 3.3.3 | 125 | 7/16/2026 |
| 3.3.1 | 131 | 7/10/2026 |
| 3.3.0 | 118 | 7/8/2026 |
| 3.2.0 | 141 | 6/29/2026 |
| 3.1.0 | 135 | 6/6/2026 |