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.
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
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
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