2017-02-24 2 views
0

nehme ich eine Verbindungsklasse mit Eigenschaften für SSHClient und SCPClient aus SSH.net Bibliothek (von Renci):SSH.net - SSH-Verbindung funktioniert, aber SCP gibt „falsche Benutzername und Passwort“

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); 
    } 

    ... 

} 

Wenn ich versuche, Befehle mit SSH auszuführen - alles funktioniert gut. Wenn ich jedoch versuche, this.Scp.Upload() zu verwenden, um eine Datei von der Netzwerkfreigabe auf den Linux-Server hochzuladen, erhalte ich System.IO.Exception mit der Fehlermeldung "Falscher Benutzername oder falsches Kennwort". Was könnte die Ursache für diesen Fehler sein?

Muss ich irgendeine Software für SCP installieren, damit sie unter Windows funktioniert? Oder ist es die Netzwerkfreigabequelle, die diese Nachricht irgendwie erzeugt? Vielleicht muss Linux Server ein anderes Passwort für SCP gesetzt haben?

Ich habe mit WinSCP überprüft und ich kann einwandfrei damit verbinden und Dateien kopieren.

Hinweis: Oben ist nur ein Codebeispiel, nicht der tatsächliche Code, aber der Workflow ist im Grunde gleich. Ich bin positiv darüber, dass es Rencis ScpClient.Upload-Methode ist, die den Fehler auslöst, also suche ich außerhalb des Codes nach einem Fehler.

+0

Fehlerhafter SCP-Client? Vielleicht einen anderen versuchen? Sie können mit WinSCP von C# integrieren, sie haben eine Client-Bibliothek auf ihrer Website. (Beachten Sie, dass Sie winscp installiert haben müssen, um dies zu verwenden). Denken Sie auch daran, dass es verschiedene Protokolle für die Dateiübertragung über SSH gibt. Möglicherweise suchen Sie nach einem Client, der SFTP unterstützt (nicht nur SCP). – caesay

+0

Was meinen Sie mit fehlerhaftem SCP-Client? Soweit ich weiß, ist SSH.net eine der meist empfohlenen Bibliotheken für SSH/SCP in .NET. Außerdem kann ich das nicht ändern (ich bin nicht der einzige Benutzer dieses Codes). – Asunez

+0

Es ist schwer vorstellbar, wie ein Server Authentifizierungsfehler für scp geben kann, während ssh zugelassen wird. Eine scp-Verbindung ist nur eine SSH-Verbindung, bei der der Client den Server auffordert, scp nach der Authentifizierung auszuführen. Während der Authentifizierung weiß der Server nicht einmal, dass der Client scp ausführt. Sie sagen, der von Ihnen eingegebene Code ist kein tatsächlicher Code. Sie sollten Ihren Code auf ein eigenständiges Programm reduzieren, das das Problem veranschaulicht. – Kenster

Antwort

0

Anscheinend war die Ursache nicht in SSH.net-Bibliothek, aber in Anmeldeinformationen zum Anmelden in Netzwerkfreigabe verwendet. Für alle, die das gleiche Problem haben, wurde das Problem durch Speichern der Anmeldedaten in Windows (siehe "Benutzernamen und Kennwort in der Anmeldeaufforderung speichern") für die Netzwerkfreigabe behoben. Einmaliger Zugriff nicht. Wahrscheinlich würde das Mappen eines Laufwerks auch funktionieren, aber das habe ich nicht überprüft.

Verwandte Themen