我想从使用 c# 运行的 Windows 盒子通过 ssh 运行命令

2023-11-25

请注意,这必须位于 Windows 盒子上,因为我正在使用 C# 来访问有关 Windows 的信息

(我需要来自 Windows 盒子和 Linux 盒子的信息,另外我认为制作一个无需 GUI 运行并在没有用户干预的情况下从 Linux 盒子访问 Windows 的程序/脚本会更加困难,如果这不是真的,请告诉我,我很想让它在 *nix 上运行,仅访问在 Windows 上运行的 Windows 信息的部分)。

有一个很好的 c# api 可以从 Windows 获取此信息,在 *nix 上它足够简单,可以运行命令并根据我的需要解析输出。

关于从 C# 使用 ssh 似乎没有太多像样的建议,sharpSSH 和 Granados 似乎已经很多年没有更新了,它们像样吗?我应该担心安全问题吗?

(我检索的信息并不敏感,但如果 ssh 实现可能存在未修补的安全缺陷(如果它们多年未更新),我担心有人窃取我的凭据。

还有其他像样的 c# ssh 库吗?如果命令输出很简单,我应该只运行 plink/putty(为 plink 运行 Windows cmd shell 并捕获输出是否很困难(有没有办法在不弹出 shell 的情况下做到这一点)?

附:虽然商业图书馆看起来不错,但我更喜欢免费的东西(如成本和源免费,如果可能的话)。


示例代码

有几个用于 C# 的商业 SSH 客户端库。以下代码展示了如何连接到 *nix 盒子、运行命令并使用我们的读取响应雷贝克斯 SSH 外壳.

// create client, connect and log in  
Ssh client = new Ssh();
client.Connect(hostname);
client.Login(username, password);

// run the 'uname' command to retrieve OS info 
string systemName = client.RunCommand("uname -a");
// display the output 
Console.WriteLine("OS info: {0}", systemName);

client.Disconnect();

对于高级场景(例如交互式命令),请参阅SSH 外壳教程.

参考文献和稳定性

您可能已经在使用 Rebex SSH 核心库而不自知。 Microsoft 在包括 Expression Web 和 Visual Studio 2010 在内的多种产品中使用 Rebex SFTP(使用此 SSH 库作为传输层)。Rebex SSH Shell “只是”其之上的另一层(最值得注意的附加功能是终端模拟器)。

您可以从以下位置下载试用版http://www.rebex.net/ssh-shell.net/download.aspx。支持论坛使用与该网站非常相似的引擎并运行在http://forum.rebex.net/

免责声明:我参与了 Rebex SSH 的开发

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我想从使用 c# 运行的 Windows 盒子通过 ssh 运行命令 的相关文章

  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 使用c#在mac上启动外部进程

    我成功地使用 System Diagnostics Process Start 在 Windows 上启动我的外部单声道可执行文件 然而在mac上却失败了 我没有收到任何错误 只是什么也没发生 我尝试按以下方式进行操作 System Dia
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 绑定集合的子集

    我有一个ObservableCollection
  • 来自同一基模板类的 C++ 重写函数,具有多重继承不明确的函数调用

    我需要打电话init int iNumber 从基类派生的函数 基类 h pragma once include stdafx h template
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • 以编程方式阻止 Vista 桌面搜索 (WORDS) 对映射网络驱动器上的 pst 文件建立索引

    经过几天的多次尝试 我没有找到任何 100 的解决方案来解决这个问题 我的搜寻和调查范围 直接访问注册表 HKLM SOFTWARE Microsoft Windows Search CrawlScopeManager Windows Sy
  • 为什么使用 .AsEnumerable() 而不是转换为 IEnumerable

    扩展方法之一IEnumerable
  • 在 OSX 上检测 Objective C 或 C++ 中的文件夹访问(如 fs_usage 命令)

    我正在 OSX 上开发实时病毒扫描程序 OSX 的命令行命令fs usage可以通过以下方式确定文件夹访问权限 并且只能以 root 用户身份运行 fs usage w f pathname grep Users Documents Use
  • 调整 CMD 窗口大小

    如何在 C 或 C 中以编程方式调整命令提示符窗口的大小 例如 80x25 或 80x40 字符 先感谢您 SetConsoleWindowInfo http msdn microsoft com en us library ms68612
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我
  • 获取线段上最接近另一个点的点[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想找到线段AB上最接近另一个点P的点 我的想法是 Get a1 and b1由直线公式y1 a1x b1 使用 A 点

随机推荐

  • jQuery - 无法将事件绑定到动态元素?

    我来维护一段 javascript 它从服务器下载一些 JSON 数据 构建一个新的表行 例如 tr 然后 将事件绑定到它 如下所示 a click function yadda yadda return false 唯一的问题是这似乎不起
  • 管理 FOSUserBundle 中的用户/角色/组

    我正在开发一个简单的 CRUD 来管理我正在使用的应用程序的用户 角色 组 管理我正在使用的用户FOSUserBundle 我想做的事情可以通过以下几种方式来完成 将角色分配给组 然后将用户分配给这些组 直接为用户分配角色 但我不知道怎么办
  • 将字典列表转换为字典集

    如何从一个字典列表中创建一组字典 Example import copy v1 k01 v01 k02 k03 v03 k04 k05 v05 v2 k11 v11 k12 k13 v13 k14 k15 v15 data N 5 for
  • git 有没有办法获取给定提交的推送日期?

    我想知道是否有一种方法可以查看与 git 日志中每个提交相关的推送日期 如果这是不可能的 有没有办法查看某个推送下的所有提交 我编写了一个程序 需要在推送时跟踪提交 因为 git 日志是按提交日期而不是推送日期排序的 所以我无法看到推送的最
  • 根据 Google 散点图的值更改点颜色

    我正在创建一个谷歌散点图 我有一个数据系列 看起来像 var data new google visualization DataTable data addColumn number ID data addColumn number Va
  • 获取控制器名称

    在 WebApiConfig cs 中我有以下内容 public static void Register HttpConfiguration config config MapHttpAttributeRoutes config Serv
  • 等待取消的未来真正完成

    我有一个SwingWorker它调用一些不检查线程中断的代码 拨打电话后worker cancel true the worker get 方法会抛出CancellationException立即 正如预期的那样 但是 由于后台任务的代码从
  • AngularJS Karma 测试中的 jQuery 触发事件

    我正在尝试测试我正在编写的新指令 但是 我似乎无法在 Karma Jasmine 中使用 jQuery 触发 keydown 事件 这是测试的简化版本 use strict describe function var compile var
  • DrawerLayout 阻止调用 MainActivity.onTouchEvent()

    我有一个应用程序可以覆盖onTouchEvent MotionEvent ev of the MainActivity确定Two Finger Swipe and Pich Open Pinch Close 一切正常 直到我添加Drawer
  • 如何使用 Java 和 itext 从 Graphics 对象创建多页 PDF

    我有一个带有抽象方法draw Graphics2D g2 的抽象类 以及方法print showPreview printPDF 对于我的 Java 程序中的每个文档 我都实现了 draw 因此我可以打印 显示预览并为每个文档创建 PDF
  • 如何使用Python将八进制转换为十进制

    我有这个小作业 我需要将十进制转换为八进制 然后将八进制转换为十进制 我做了第一部分 但无法弄清楚第二部分来挽救我的生命 第一部分是这样的 decimal int input Enter a decimal integer greater
  • 检查用户是否在 Android 中的 Firebase Google 身份验证中首次进行身份验证

    我在 Android 应用程序中使用 Firebase 身份验证 并使用 Google 帐户身份验证作为登录应用程序的选项 我如何知道用户是否是首次登录应用程序 要检查用户是否是第一次登录 只需调用AdditionalUserInfo is
  • WPF FlowDocument 表 - 自动调整选项?

    我想要一个表根据内容逻辑地调整列的大小 这在 WPF 中可能吗 替代文本 http img43 imageshack us img43 2640 flowdocument jpg 这是我正在使用的代码
  • C++:std::vector [] 运算符

    Why std vector有 2 个操作员 实现 reference operator size type pos const reference operator size type pos const One for 非常量矢量对象
  • 哪个是正确的:向量或const向量

    哪个是对的 vector
  • 在 mono 中编译的 C# - 检测操作系统

    我正在尝试让一个 C 应用程序在 OSX 下运行 但这并不是完全没有痛苦 为了在短期内解决一些问题 我正在考虑在 OSX 中运行时设置一些特定的规则 但是 我可以使用什么来确定应用程序是在 Windows 还是 OSX 下运行 来自单声道w
  • 线程本地存储变量的地址

    好吧 说我有 thread int myVar 然后我将 myVar 从一个线程传递到另一个线程 如果数据确实是 本地 那么 1 个线程的 TLS 存储可能不会映射到其他线程地址空间 事实上 您可能会认为它不应该是 这会导致 SIGSEGV
  • Git 没有将 gpg 密钥视为秘密,即使它是秘密,我该如何修复它?

    所以看来我的 gpg 密钥是秘密的 但是当我尝试在 git 中签署我的提交时 它不会被识别为秘密 我完全不知道这是为什么 我相信我的设置正确 但我的提交标志失败 难道我做错了什么 预先感谢您的任何帮助 brad reason entry c
  • std::shared_ptr 在空指针上调用非默认删除器

    看这个例子 include
  • 我想从使用 c# 运行的 Windows 盒子通过 ssh 运行命令

    请注意 这必须位于 Windows 盒子上 因为我正在使用 C 来访问有关 Windows 的信息 我需要来自 Windows 盒子和 Linux 盒子的信息 另外我认为制作一个无需 GUI 运行并在没有用户干预的情况下从 Linux 盒子