问题标签 [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 投票
5 回答
14469 浏览

c# - Renci SSH.NET:是否可以创建一个包含不存在的子文件夹的文件夹

我目前正在使用 Renci SSH.NET 使用 SFTP 将文件和文件夹上传到 Unix 服务器,并使用创建目录

只要文件夹“test”已经存在,就可以完美运行。如果没有,该CreateDirectory方法将失败,并且每次尝试创建包含多个级别的目录时都会发生这种情况。

有没有一种优雅的方法可以递归地生成字符串中的所有目录?我假设该CreateDirectory方法会自动执行此操作。

0 投票
3 回答
4805 浏览

c# - Renci SSH.NET:如何删除非空目录?

我正在使用 Renci SSH.NET 访问 unix 服务器上的文件和文件夹。我想通过指定基本目录来删除整个目录树,但是当我调用 时sftp.DeleteDirectory(destination),只有当我传递一个空目录时,该调用才会成功。

但是,我还希望能够删除包含文件或其他文件夹的目录。大多数 .NET 类都会自动处理,如何在 SSH.NET 中完成?

0 投票
1 回答
3652 浏览

c# - SSH.NET:是否可以使用 SFTP 上传文件并保留源文件中的文件日期?

目前,我正在使用 Renci SSH.NET 库通过 SFTP 将文件上传到 Unix 服务器。我不喜欢的一件事是,在上传文件后,创建日期和修改日期会更改为上传发生的时间。

我想保留源文件中的原始文件日期,可以吗?

0 投票
1 回答
4361 浏览

c# - SSH.NET:如何检查文件或文件夹是否已存在其他大写小写拼写

我目前正在使用 C# 和 SSH.NET 将文件或文件夹上传到 Unix 服务器。我的问题是,Unix 是区分大小写的,而 Windows 不是,或者至少不是。因此,如果我复制一个名为“test”的文件夹和另一个名为“Test”的文件夹,我会遇到问题。不同的情况对于 Unix 来说当然没有问题,但是在 Windows 下,当通过 Samba 访问文件夹时,我只能看到其中一个的内容。

我想要做的是以下内容:如果我通过 sftp 上传文件或文件夹,但该文件或文件夹已存在另一种大写或小写组合,我想重命名要复制的文件以匹配已存在的名称.

有没有简单方便的方法来做到这一点?我基本上需要的是不区分大小写的检查文件夹或文件夹的一部分是否已经存在。

0 投票
1 回答
4758 浏览

c# - SSH.NET - 消息类型 80 无效

我有以下代码尝试连接到使用 OpenSSH 构建的 SFTP 服务器(服务器工作,因为我已经能够通过 WinSCP 客户端成功连接到这个 FTP):

调用该sftp.Connect()行时,会引发以下异常:

消息类型 80 无效

为什么会这样?如何使用 SSH.NET 连接到我的 SFTP 服务器?

谢谢

0 投票
1 回答
2592 浏览

c# - SSH.NET > 用于端口转发的 SSH 客户端

我正在使用 SSH.NET 对 GUI 进行编码以创建与 VPS 的连接。我的目的是做一个玩网络游戏的代理服务器。

我需要动态转发一个端口,创建一个 SOCKS 服务器,然后 Proxifier(我电脑上安装的另一个程序)可以连接到这个服务器。

当我使用 PuTTY 时,Proxifier 运行良好,但当我使用我的软件时,它无法正常工作。

这是我的代码:

现在,Proxifier 的日志

0 投票
2 回答
2834 浏览

c# - C# StreamReader.ReadLine 在流结束之前返回 null

我正在使用SSH.NET库使用inotifywait命令在远程 linux 服务器上实现文件系统观察程序。本质上它是一个包装器:

该命令将打印出来(到 STDOUT):

这很简单,可以解析并转化为事件。无论如何,我的 C# 代码本质上是:

在写入单个文件后运行它会产生以下输出:

立即出现Watching for events并等待第一个文件被写入(阻塞等待,正如我所期望的那样StreamReader)。但是,ReadLine即使命令仍在愉快地运行,下一个而不是另一个阻塞等待返回 null (表示流结束)。我知道我可以这样改变循环:

结果是:

根据需要,但它摆脱了对新输入的阻塞等待,这意味着循环不断旋转(显然是不希望的......)

你能解释一下这种行为吗?对另一种方法有什么建议吗?

- - 更新 - -

看起来该库正在迁移到 github 并进行更新。我已提交此问题以尝试解决此问题。

0 投票
3 回答
7936 浏览

c# - SSH.NET 从 shellstream 获取全部输出

我遇到了一个很奇怪的现象;使用该client.RunCommand()功能时,我从开关中获取整个输出,但使用我自己的实现时:

我只得到部分输出,并提示--More-- 我如何从交换机获得全部输出?

部分输出的示例:

使用该client.RunCommand()功能时,我在输出中获得了全部 48 个端口。

在此先感谢,如果有任何不清楚的地方,请说出来。

附言。在任何人建议之前,不,我不能使用client.RunCommand(),我必须使用流。

pps,如果有人能解释其中的价值观,cl.CreateShellStream("Trail", 80, 24,800, 600, 1024);我将非常感谢,因为我真的不明白这些价值观的含义

0 投票
2 回答
398 浏览

c# - Renci SSH.NET:如何创建符号链接?

我目前正在使用 Renci SSH.NET 使用 SFTP 将文件上传到 unix 服务器,它工作正常。但是,我现在想将文件上传到“符号链接容器”,然后在指向这些文件的另一个目录中创建一个符号链接。那可能吗?我还没有找到管理符号链接的类,那么如何实现呢?

0 投票
3 回答
696 浏览

c# - Renci SSH.NET:可以创建符号链接,但删除符号链接失败,为什么?

我目前正在尝试使用 Renci SSH.NET 将文件复制到使用 SFTP 的 Unix 服务器,此外,我想创建一个指向已复制文件的符号链接。这基本上是我的代码的样子,注意变量sftp是一个工作实例SftpClient

问题是:如何正确删除符号链接?请注意:我只想删除指向文件夹的链接Test001,而不是引用的文件夹本身。为什么这不起作用?不幸的是,SSH.NET 没有抛出有意义的异常,我得到的唯一文本是“失败”,并且由于这在内部通过一些“请求”机制起作用,所以我无法调试问题的确切来源。

当我查看异常时,我发现: Data: {System.Collections.ListDictionaryInternal}

很明显,看起来 SSH.NET 正在尝试删除链接的文件夹。我想要的是删除符号链接本身,而不是后面的文件夹。