问题标签 [ssh.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
296 浏览

asp.net - 无法在 IIS 环境中使用 ssh.net 打开多个连接

我正在使用 ssh.net 库作为 ASP.NET 应用程序的一部分与另一台服务器通信。

我注意到使用 TCPView 一次只有一个通过 SSH 连接到传出服务器的连接,IIS 服务器不会像我期望的那样为每个 Web 请求打开一个 SSH 连接。这会导致巨大的性能问题,因为一次只能处理一个请求 - 并且必须在新请求开始之前完成。同时,其他请求等待。

如何允许 ssh.net 库或 IIS 服务器根据需要打开尽可能多的连接?

0 投票
1 回答
10523 浏览

c# - 使用 sshnet 库进行 SFTP 上传 - 处理连接问题

使用 Renci 的 sshnet 库,我无法在上传文件时处理连接问题。

如果我在 UploadFile 上设置断点,禁用我的连接并让它运行,它就会挂在该行上。这些可能是慢速连接上的大文件,因此添加 OperationTimeout 会很困难。

此外,这在一致的连接上一遍又一遍地工作。有任何想法吗?谢谢!

0 投票
0 回答
3796 浏览

c# - SSH.NET上传多个文件异步抛出异常

我正在创建一个应用程序,它将

  1. 处理CSV文件,
  2. JObject为文件中的每条记录创建CSV并将 JSON 保存为 txt 文件,最后
  3. 将所有这些 JSON 文件上传到SFTP服务器

在为第三点寻找免费图书馆后,我决定使用SSH.NET.

我创建了以下类来异步执行上传操作。

UploadDocumentAsync方法返回一个TPL Task,以便我可以调用它来异步上传多个文件。

我从不同类中的以下方法调用此UploadDocumentAsync方法:

尽管 CSV 文件会产生数千条 JSON 记录,但我想以至少 50 条为一组上传这些记录。这ProcessJsonObjects总是一次收到一个 50JObject秒的列表,我想将其异步上传到 SFTP 服务器。client.Connect();但是我在方法行收到以下错误UploadDocumentAsync

将批量大小减少到 2 可以正常工作,但有时会导致以下错误:

我需要能够同时上传许多文件。或者告诉我 IIS 或 SFTP 服务器是否需要配置此类操作以及它是什么。

我究竟做错了什么?非常感谢您的帮助。

0 投票
2 回答
2606 浏览

c# - 使用 SSH.NET 下载时文件为空

我正在使用 SSH.NET 从 SFTP 下载文件,这是我的代码:

问题是下载了 csv 文件,但里面没有任何数据。我也更改了 remoteFile 路径,但仍然下载了包含空数据的文件。我试图检查文件是否存在使用

即使我用 .remoteFileName 更改它也总是返回 true "pp"

谁能帮助我我做错了什么?或者推荐我另一个库来从 SFTP 服务器下载文件。我已经尝试过 WinSCP,但我收到了 hostkey 错误,所以我尝试SshHostKeyFingerprint按照服务器教程的指导正确传递。我仍然收到主机密钥错误。是否有任何简单的库我只需要从 SFTP 下载文件?

0 投票
1 回答
791 浏览

c# - 如何对代理服务器隐藏 SFTP 服务器 IP 地址?

我正在使用此代码连接到 SFTP 服务器:

现在,当嗅探我与 Wireshark 的连接时,我可以看到 HTTP 请求,包括 SFTP 服务器 IP 地址。

如何对代理服务器隐藏 SFTP 服务器 IP 地址?

0 投票
1 回答
1368 浏览

powershell - Renci SSH.NET - 脚本无限期挂起

这是代码 - 在最后一个命令之后挂起:

上面通过 SSH 发出的命令STATISTICS show-periodic - 当手动发出到 Netapp Storage SAN 的 SSH 会话时 - 开始显示数据并永远运行 - 您不会再次收到提示 - 您必须手动发出CTRL-C退出此命令,然后您会收到 CLI在 SSH 会话中提示发出另一个所需的命令。我认为这就是 powerscript 挂起的原因 - 因为该命令不会返回到提示符 - 没有CTRL-C发出。

我想$SshCommand = $SshClient.RunCommand('CTRL-C')按照上面的最后一个命令(在所需的睡眠时间之后)发出 - 但是 powershell 脚本没有得到控制权。

想知道他们是否有任何方法可以在命令之后重新获得控制statistics...权,然后能够CTRL-C在所需的时间间隔后将命令发出到 SSH 会话中。

0 投票
2 回答
1564 浏览

c# - SSH.NET 库对文件名进行编码

我必须使用 SSH.NET 库下载文件。下载文件后,我必须删除远程文件。一切正常,但文件名已编码。我的意思是,例如,如果我有一个名为 的文件New file,我会下载/上传一个名为New%20file. 现在,如果我下载/上传我获得的新文件New%25%20file并再次New%252520file......等等......这是非常有问题的。下载后如何避免更改文件名?

这是我用来下载的代码:

编辑:

base.Uri只是定义如下:

GetFileName 方法是:

当我调试时,我可以看到类 Uri 的属性具有正确的值......它没有编码

谢谢

0 投票
0 回答
1300 浏览

c# - 多线程上的 SSH.NET 会话超时

我有下面的多线程 FTP 进程。MaxThread 为 4,因为我们的目标客户端已将我们限制为 4 个线程。

在 FtpProcess 方法中,连接被创建并且 QueueUserWorkItem 等待打开的线程继续。但连接不会发生。我收到一个会话超时错误。

现在,如果我不使用 QueueUserWorkItem 而只使用 new Thread(FtpProcess).Start 那么它可以工作并连接多次,直到出现上限问题。

我是否遗漏了什么或完全误解了这个 .NET 进程的整个底层代码?

0 投票
1 回答
795 浏览

c# - 如何使用 c# 使用 ssh.net 运行另一个批处理脚本

当我使用 ssh.net 连接到另一台计算机时,我想运行一个批处理脚本

它似乎不起作用:

我可以连接并运行类似的命令,shutdown但无法运行批处理文件。

我应该怎么办?

0 投票
1 回答
350 浏览

c# - 从 c# 中的其他方法访问创建的对象

我正在编写 ac# SSH 隧道程序以将动态隧道合并到一个程序中,而不是使用 putty+firefox socks4/chrome socks4 插件,输入相同的用户/密码..ect。它正在使用 Renci.SSHNet 库。

我的问题是:当我创建一个新的 SshClient 对象时,我希望能够稍后从终止连接按钮终止该连接,并且还能够运行一个单独的线程,该线程说 while(isConnected) if (! addedToList) addtolist ..问题是我不确定如何访问不同的同时运行的 sshClient 对象。假设我有 3 个与不同主机的开放连接。如果我从当前连接中选择主机 ip,我需要一种方法将该 ip 地址与 SshCLient 连接连接,然后运行 ​​sshClient.Disconnect()。我意识到您可以使用 sshClient.ConnectionInfo.Host.ToString() 并匹配一个字符串,但如果我使用不同的方法(单击终止连接按钮)我不知道如何匹配 192.168 的主机 ip。 1.1 到连接到该主机的 sshClient。

我研究了弱引用,但这似乎只有在我只有一个 sshClient 时才有效。如果有一种方法可以访问当前创建的 SshClient 对象,然后将其与 Host ip 属性匹配,它将起作用。我在 Google 中找不到这个。

我考虑过设计一些精心设计的方法来创建以 deviceIpString 命名的私有对象变量 SshClients,但不确定如何创建以另一个变量的内容(字符串)命名的变量。如: