C# SSH.net-SSH连接正常,但SCP返回;用户名和密码不正确”;

C# SSH.net-SSH连接正常,但SCP返回;用户名和密码不正确”;,c#,scp,ssh.net,C#,Scp,Ssh.net,假设我有一个连接类,其中包含SSH.netlibrary(由Renci提供)中SSHClient和SCPClient的属性: 当我尝试使用SSH运行命令时,一切都正常。然而,当我尝试使用this.Scp.Upload()(注意构造函数中的相同凭据)将文件从网络共享上载到Linux服务器时,我会收到System.IO.Exception返回“错误的用户名或密码”。出现此错误的原因可能是什么 我需要为SCP安装任何软件才能在Windows上正常工作吗?还是网络共享源以某种方式生成了此消息?也许Lin

假设我有一个连接类,其中包含
SSH.net
library(由Renci提供)中SSHClient和SCPClient的属性:

当我尝试使用SSH运行命令时,一切都正常。然而,当我尝试使用
this.Scp.Upload()
(注意构造函数中的相同凭据)将文件从网络共享上载到Linux服务器时,我会收到System.IO.Exception返回“错误的用户名或密码”。出现此错误的原因可能是什么

我需要为SCP安装任何软件才能在Windows上正常工作吗?还是网络共享源以某种方式生成了此消息?也许Linux服务器需要为SCP设置不同的密码

我使用WinSCP进行了检查,我可以与它完美地连接并复制周围的文件


注意:以上只是一个代码示例,不是实际的代码,但工作流程基本相同。我确信是Renci的ScpClient.Upload方法引发了错误,因此我正在代码之外查找错误。

显然,原因不在SSH.net库中,而在用于登录网络共享的凭据中。对于存在相同问题的任何人,通过Windows将凭据存储到网络共享(在登录提示中选中“记住我的用户名和密码”)修复了该问题。拥有一次性访问权限并不重要。可能映射驱动器也可以,但我还没有检查。

有故障的SCP客户端?也许试试别的?您可以从C#与WinSCP集成,他们的网站上有一个客户端库。(请注意,您必须安装winscp才能使用它)。还要记住,SSH上的文件传输有不同的协议,您可能正在寻找一个支持SFTP(而不仅仅是SCP)的客户机。您所说的故障SCP客户机是什么意思?据我所知,SSH.net是.net中最推荐的SSH/SCP库之一。另外,我不能改变这一点(我不是这段代码的唯一用户),很难想象服务器在允许ssh的同时,如何给scp提供身份验证失败。scp连接只是一个ssh连接,其中客户端请求服务器在身份验证后运行scp。在身份验证期间,服务器甚至不知道客户端将执行scp。你说你包含的代码不是实际的代码。你应该把你的代码简化成一个独立的程序来演示这个问题。@Kenster的问题是我不认为代码是问题所在。我可能缺少一些依赖项,这里使用我提供的示例来说明我对SSH和SCP使用相同的凭据(这实际上是简化的代码)。这段代码在我测试过的其他PC上运行,但我无法让它在我的PC上运行,因此有一个问题是,其他因素可能会干扰这段代码。
public class SecureConn
{
    public SshClient Ssh {get; set;}
    public ScpClient Scp {get; set;}

    public SecureConn(string host, string usr, string pwd)
    {
        this.Ssh = new SshClient(host, usr, pwd);
        this.Scp = new ScpClient(host, usr, pwd);
    }

    ...

}