SSH.NET: .NET 平台上的安全 Shell 库

devtools/2025/2/28 4:03:51/

简介

SSH.NET 是一个针对 .NET 平台优化的 Secure Shell (SSH-2) 库,支持并行操作。它提供了丰富的功能,包括执行 SSH 命令、SFTP 和 SCP 文件传输、端口转发、交互式终端等功能,并支持多种认证方式和加密方法。

主要特性

  • 命令执行:支持同步和异步方式执行 SSH 命令。
  • SFTP 功能:支持同步和异步方式的文件上传和下载。
  • SCP 功能:支持文件传输协议(SCP)。
  • 端口转发:支持远程、动态和本地端口转发。
  • 交互式终端:提供交互式 Shell/Terminal 实现。
  • 认证方式:支持公钥、密码和键盘交互认证,包括多因素认证。
  • 代理连接:支持通过 SOCKS4、SOCKS5 或 HTTP 代理进行连接。

支持以下目标框架:

  • .NET Framework 4.6.2 及以上版本
  • .NET Standard 2.0 和 2.1
  • .NET 6 及以上版本

安装与使用

Install-Package SSH.NET

使用

执行命令

如何使用 SshClient 类执行 SSH 命令:

using Renci.SshNet;using (var client = new SshClient("sftp.foo.com", "guest", new PrivateKeyFile("path/to/my/key")))
{client.Connect();using (var cmd = client.RunCommand("echo 'Hello World!'")){Console.WriteLine(cmd.Result); // 输出 "Hello World!\n"}
}
使用 SFTP 上传和列出文件

SftpClient 类上传文件并列出目录内容:

using Renci.SshNet;
using System.IO;using (var client = new SftpClient("sftp.foo.com", "guest", "pwd"))
{client.Connect();using (var fs = File.OpenRead(@"C:\tmp\test-file.txt")){client.UploadFile(fs, "/home/guest/test-file.txt");}foreach (var file in client.ListDirectory("/home/guest/")){Console.WriteLine($"{file.FullName} {file.LastWriteTime}");}
}

主要类

SSH.NET 提供了以下主要类:

  • Renci.SshNet.SshClient:用于执行 SSH 命令。

  • Renci.SshNet.SftpClient:用于 SFTP 操作。

  • Renci.SshNet.ScpClient:用于 SCP 操作。

  • Renci.SshNet.PrivateKeyFile:用于处理私钥文件。

  • Renci.SshNet.SshCommand:用于执行 SSH 命令。

  • Renci.SshNet.ShellStream:用于实现交互式 Shell/Terminal。


http://www.ppmy.cn/devtools/163244.html

相关文章

0.MySQL安装|卸载内置环境|配置官方yum源|安装mysql|登录mysql|设置配置文件(centos8.2)

卸载内置环境 检查是否有mariadb和mysql服务 ps ajx |grep mariadb ps ajx |grep mysql停止mysql服务 systemctl stop mysqld找到mysql安装包 rpm -qa | grep mysql删除安装包 rpm -qa | grep mysql | xargs yum -y remove检查 ls /etc/my.cnfls /var/lib/mysql/配置官方…

统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?

得分函数:统计学中的“敏感探针” 在统计学和概率论中,得分函数(Score Function)是一个看似简单却非常重要的概念。它不仅是Fisher信息矩阵的核心组成部分,还在参数估计、模型优化等领域发挥着关键作用。今天&#xf…

大白话html 第一章了解基本概念

第一章了解基本概念 什么是HTML HTML呢,简单来说就是一种专门用来跟浏览器“沟通”的语言。咱们平时看到的那些花花绿绿、各种各样的网页,都是靠HTML来搭建起来的。它就像是一个建筑师手里的图纸,告诉浏览器这个网页上都有啥东西&#xff0…

DeepSeek系统架构的逐层分类拆解分析,从底层基础设施到用户端分发全链路

一、底层基础设施层 1. 硬件服务器集群 算力单元: GPU集群:基于NVIDIA H800/H100 GPU构建,单集群规模超10,000卡,采用NVLink全互联架构实现低延迟通信。国产化支持:适配海光DCU、寒武纪MLU等国产芯片,通过…

Word表格中如何只单独调整某一单元格宽度

大家好,我是小鱼。 在日常制作Word表格时,表格中不同单元格有时需要设置不同的宽度,但是很多小伙伴会发现想单独调整某一个单元格宽度时,发现其它单元格宽度也会发生变化。那么,到底怎么才能单独调整某一单元格宽度呢…

DIALOGPT:大规模生成式预训练用于对话响应生成

摘要 我们提出了一个大规模、可调节的神经对话响应生成模型,DIALOGPT(对话生成预训练变换器)。该模型训练于从2005年至2017年间Reddit评论链中提取的1.47亿次类似对话的交流,DIALOGPT扩展了Hugging Face的PyTorch变换器&#xff…

基于ffmpeg+openGL ES实现的视频编辑工具-添加背景音乐(十)

在视频编辑领域,背景音乐宛如灵魂,为视频注入情感与氛围,极大地提升其观赏性与感染力。本文将深入探讨如何借助 ffmpeg 和 openGL ES 技术,在视频编辑工具中实现添加背景音乐这一关键功能。 一、技术实现流程概述 在视频中添加背景音乐,首要步骤是借助 ffmpeg 从视频文件…

使用 Promptic 进行对话管理需要具备python技术中的那些编程能力?

使用 Promptic 进行对话管理时,需要掌握一些基础的编程知识和技能,以下是详细说明: 1. Python 编程基础 Promptic 是一个基于 Python 的开发框架,因此需要具备一定的 Python 编程能力,包括: 函数定义与使用:了解如何定义函数、使用参数和返回值。类型注解:熟悉 Python…