问题标签 [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.
asp.net - 无法在 IIS 环境中使用 ssh.net 打开多个连接
我正在使用 ssh.net 库作为 ASP.NET 应用程序的一部分与另一台服务器通信。
我注意到使用 TCPView 一次只有一个通过 SSH 连接到传出服务器的连接,IIS 服务器不会像我期望的那样为每个 Web 请求打开一个 SSH 连接。这会导致巨大的性能问题,因为一次只能处理一个请求 - 并且必须在新请求开始之前完成。同时,其他请求等待。
如何允许 ssh.net 库或 IIS 服务器根据需要打开尽可能多的连接?
c# - 使用 sshnet 库进行 SFTP 上传 - 处理连接问题
使用 Renci 的 sshnet 库,我无法在上传文件时处理连接问题。
如果我在 UploadFile 上设置断点,禁用我的连接并让它运行,它就会挂在该行上。这些可能是慢速连接上的大文件,因此添加 OperationTimeout 会很困难。
此外,这在一致的连接上一遍又一遍地工作。有任何想法吗?谢谢!
c# - SSH.NET上传多个文件异步抛出异常
我正在创建一个应用程序,它将
- 处理
CSV
文件, JObject
为文件中的每条记录创建CSV
并将 JSON 保存为 txt 文件,最后- 将所有这些 JSON 文件上传到
SFTP
服务器
在为第三点寻找免费图书馆后,我决定使用SSH.NET
.
我创建了以下类来异步执行上传操作。
该UploadDocumentAsync
方法返回一个TPL Task
,以便我可以调用它来异步上传多个文件。
我从不同类中的以下方法调用此UploadDocumentAsync
方法:
尽管 CSV 文件会产生数千条 JSON 记录,但我想以至少 50 条为一组上传这些记录。这ProcessJsonObjects
总是一次收到一个 50JObject
秒的列表,我想将其异步上传到 SFTP 服务器。client.Connect();
但是我在方法行收到以下错误UploadDocumentAsync
:
将批量大小减少到 2 可以正常工作,但有时会导致以下错误:
我需要能够同时上传许多文件。或者告诉我 IIS 或 SFTP 服务器是否需要配置此类操作以及它是什么。
我究竟做错了什么?非常感谢您的帮助。
c# - 使用 SSH.NET 下载时文件为空
我正在使用 SSH.NET 从 SFTP 下载文件,这是我的代码:
问题是下载了 csv 文件,但里面没有任何数据。我也更改了 remoteFile 路径,但仍然下载了包含空数据的文件。我试图检查文件是否存在使用
即使我用 .remoteFileName 更改它也总是返回 true "pp"
。
谁能帮助我我做错了什么?或者推荐我另一个库来从 SFTP 服务器下载文件。我已经尝试过 WinSCP,但我收到了 hostkey 错误,所以我尝试SshHostKeyFingerprint
按照服务器教程的指导正确传递。我仍然收到主机密钥错误。是否有任何简单的库我只需要从 SFTP 下载文件?
c# - 如何对代理服务器隐藏 SFTP 服务器 IP 地址?
我正在使用此代码连接到 SFTP 服务器:
现在,当嗅探我与 Wireshark 的连接时,我可以看到 HTTP 请求,包括 SFTP 服务器 IP 地址。
如何对代理服务器隐藏 SFTP 服务器 IP 地址?
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 会话中。
c# - SSH.NET 库对文件名进行编码
我必须使用 SSH.NET 库下载文件。下载文件后,我必须删除远程文件。一切正常,但文件名已编码。我的意思是,例如,如果我有一个名为 的文件New file
,我会下载/上传一个名为New%20file
. 现在,如果我下载/上传我获得的新文件New%25%20file
并再次New%252520file
......等等......这是非常有问题的。下载后如何避免更改文件名?
这是我用来下载的代码:
编辑:
base.Uri
只是定义如下:
GetFileName 方法是:
当我调试时,我可以看到类 Uri 的属性具有正确的值......它没有编码
谢谢
c# - 多线程上的 SSH.NET 会话超时
我有下面的多线程 FTP 进程。MaxThread 为 4,因为我们的目标客户端已将我们限制为 4 个线程。
在 FtpProcess 方法中,连接被创建并且 QueueUserWorkItem 等待打开的线程继续。但连接不会发生。我收到一个会话超时错误。
现在,如果我不使用 QueueUserWorkItem 而只使用 new Thread(FtpProcess).Start 那么它可以工作并连接多次,直到出现上限问题。
我是否遗漏了什么或完全误解了这个 .NET 进程的整个底层代码?
c# - 如何使用 c# 使用 ssh.net 运行另一个批处理脚本
当我使用 ssh.net 连接到另一台计算机时,我想运行一个批处理脚本
它似乎不起作用:
我可以连接并运行类似的命令,shutdown
但无法运行批处理文件。
我应该怎么办?
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,但不确定如何创建以另一个变量的内容(字符串)命名的变量。如: