<PackageReference Include="SSH.NET" Version="2016.1.0" />

ForwardedPortDynamic

Provides functionality for forwarding connections from the client to destination servers via the SSH server, also known as dynamic port forwarding.
using System; namespace Renci.SshNet { public class ForwardedPortDynamic : ForwardedPort { private ForwardedPortStatus _status; private bool _isDisposed; public string BoundHost { get; set; } public uint BoundPort { get; set; } public override bool IsStarted => _status == ForwardedPortStatus.Started; public ForwardedPortDynamic(uint port) : this(string.Empty, port) { } public ForwardedPortDynamic(string host, uint port) { BoundHost = host; BoundPort = port; _status = ForwardedPortStatus.Stopped; } protected override void StartPort() { if (ForwardedPortStatus.ToStarting(ref _status)) try { } catch (Exception) { _status = ForwardedPortStatus.Stopped; throw; } } protected override void StopPort(TimeSpan timeout) { if (ForwardedPortStatus.ToStopping(ref _status)) { base.StopPort(timeout); _status = ForwardedPortStatus.Stopped; } } protected override void CheckDisposed() { if (_isDisposed) throw new ObjectDisposedException(GetType().FullName); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected override void Dispose(bool disposing) { if (!_isDisposed) { base.Dispose(disposing); _isDisposed = true; } } ~ForwardedPortDynamic() { Dispose(false); } } }