C#SFTP无此类文件

C#SFTP无此类文件,c#,curl,ftp,sftp,ssh.net,C#,Curl,Ftp,Sftp,Ssh.net,我正在使用连接到远程SFTP服务器。我试图使用非常基本的代码,但它不起作用 using (var client = new SftpClient(host, username, password)) { client.Connect(); client.ChangeDirectory(@"sftp://server.example.com/other_directory"); } 但是,这会在ChangeDirectory方法上引发一个异常,表示没有这样的文件 我试着用C

我正在使用连接到远程SFTP服务器。我试图使用非常基本的代码,但它不起作用

using (var client = new SftpClient(host, username, password))
{
    client.Connect();   
    client.ChangeDirectory(@"sftp://server.example.com/other_directory");
}
但是,这会在
ChangeDirectory
方法上引发一个异常,表示
没有这样的文件

我试着用Curl做了同样的测试,但出现了一个错误

curl:(51)SSL对等证书或SSH远程密钥不正常

然而,我加入了curl的论点,一切都很顺利

--unsecure
部分是否与
SSH.NET
库不工作的原因有关,或者是否有其他原因?有没有一种方法可以模拟
--unsecure
在C#中的作用


谢谢

如果其他任何人遇到此问题,那么像ChangeDirectory和UploadFile这样的任何方法都需要一个相对于
WorkingDirectory
属性的路径。因此,我通过将问题更改为

client.ChangeDirectory(@"/other_directory");

希望这对其他人有所帮助

在我的例子中,问题是用户“用户名”的权限。 var客户端=新的SftpClient(主机、用户名、密码)

因此,用户“username”必须对文件夹other_目录具有必要的权限,才能使以下代码正常工作

client.ChangeDirectory(@"/other_directory");

听起来像是
sftp://server.example.com/
正在拒绝您的安全连接。所以这可能是一个配置问题,在客户端,你没有做错任何事情。起初我认为可能是这样,但我可以通过我机器上的curl和其他第三方工具访问它,所以我想它应该在我这边?使用诸如wireshark或fiddler之类的嗅探器捕获数据,并比较工作和非工作应用程序之间的结果。通常问题在于html标题的差异。@jdweng好主意,谢谢!修复了它,答案发布在
/other\u目录下
是绝对路径,而不是相对路径。关键是这些方法需要路径,但是你给的是URL,我认为这是一个相对路径?这是相对于工作目录的文章是错误的。它说的是“路径”,但实际上是关于URL的。我们在这里讨论的是路径,而不是URL。相对于工作目录的路径不能以斜杠开头。