SkillAgentSearch skills...

LibSshNet

A wrapper around libssh2 for .NET

Install / Use

/learn @NullOpsDevs/LibSshNet
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

NullOpsDevs.LibSsh

A modern, cross-platform .NET library providing managed bindings for libssh2, enabling SSH operations including remote command execution, SCP file transfers, and advanced terminal (PTY) features.

NuGet License: MIT .NET .NET .NET .NET .NET .NET Documentation

Features

| Category | Feature | Method(s) | Supported | |-------------------------|------------------------------------------|------------------------------------------------------|-----------| | Authentication | | | | | | Password authentication | Authenticate(PasswordCredential) | ✅ | | | Public key authentication | Authenticate(PublicKeyCredential) | ✅ | | | SSH agent authentication | Authenticate(SshAgentCredential) | ✅ | | | Host-based authentication | Authenticate(HostBasedCredential) | ✅ | | | Keyboard-interactive authentication | - | ❌ | | Session Management | | | | | | Connection | Connect, ConnectAsync | ✅ | | | Host key retrieval | GetHostKey | ✅ | | | Host key verification | GetHostKeyHash | ✅ | | | Session timeout configuration | SetSessionTimeout, DisableSessionTimeout | ✅ | | | Keepalive configuration | ConfigureKeepAlive, SendKeepAlive | ✅ | | | Method preference configuration | SetMethodPreferences | ✅ | | | Secure default algorithms | SetSecureMethodPreferences | ✅ | | | Negotiated method inspection | GetNegotiatedMethod | ✅ | | File Transfer (SCP) | | | | | | File upload | WriteFile, WriteFileAsync | ✅ | | | File download | ReadFile, ReadFileAsync | ✅ | | Command Execution | | | | | | One-shot command execution | ExecuteCommand, ExecuteCommandAsync | ✅ | | | Streaming command execution | ExecuteCommandStreaming, ExecuteCommandStreamingAsync | ✅ | | | Exit code retrieval | SshCommandResult.ExitCode | ✅ | | | Exit signal retrieval | SshCommandResult.ExitSignal | ✅ | | | stdout/stderr separation | SshCommandResult.Stdout, SshCommandResult.Stderr | ✅ | | Terminal (PTY) | | | | | | PTY allocation | CommandExecutionOptions.RequestPty | ✅ | | | Terminal type selection | CommandExecutionOptions.TerminalType | ✅ | | | Terminal modes | CommandExecutionOptions.TerminalModes | ✅ | | | Window size configuration | CommandExecutionOptions.TerminalWidth/Height | ✅ | | | Interactive shell mode | - | ❌ | | Error Handling | | | | | | Typed exceptions | SshException | ✅ | | | Detailed error messages | SshException.Message | ✅ | | | 60+ error code mappings | SshError enum | ✅ | | Advanced Features | | | | | | Host key type detection | SshHostKey.Type | ✅ | | | Microsoft.Extensions.Logging integration | Constructor ILogger parameter | ✅ | | | Cross-platform native binaries | Bundled in NuGet package | ✅ | | | Global library cleanup | LibSsh2.Exit() | ✅ | | Thread Safety | | | | | | SshSession is NOT thread-safe. | - | ❌ | | | Multiple SshSessions are supported. | - | ✅ |

Installation

Install via NuGet Package Manager:

dotnet add package NullOpsDevs.LibSsh

Or via Package Manager Console:

Install-Package NullOpsDevs.LibSsh

Supported Platforms

  • .NET 9.0+
  • Windows (x64)
  • Linux (x64, ARM64)
  • macOS (x64, ARM64/Apple Silicon)

Quick Start

Quickstart guide is available here.

Building from Source

Prerequisites

  • .NET 9.0 SDK or later
  • Git

Build Steps

# Clone the repository
git clone https://github.com/NullOpsDevs/LibSshNet.git
cd LibSshNet

# Restore dependencies and build
dotnet restore
dotnet build

# Run tests
cd NullOpsDevs.LibSsh.Test
docker compose up -d
dotnet run

Architecture

The library consists of three layers:

  1. Managed Layer: Clean, idiomatic C# API with async/await support (not true async)
  2. Interop Layer: P/Invoke bindings to libssh2 native library
  3. Native Layer: Pre-compiled libssh2 binaries for all supported platforms

All native dependencies are bundled in the NuGet package for zero-configuration deployment.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgments

This library uses libssh2, a client-side C library implementing the SSH2 protocol.

libssh2 is licensed under BSD License.

Related Skills

View on GitHub
GitHub Stars30
CategoryDevelopment
Updated24d ago
Forks0

Languages

C#

Security Score

80/100

Audited on Mar 14, 2026

No findings