SSH-host-Schlüssel-fingerprint nicht überein Muster C# WinSCP
Ich versuche zum herstellen einer FTPS-server mit C# via WinSCP und ich bin immer diese Fehlermeldung:
SSH-host-Schlüssel-fingerprint ... nicht auf das Muster passen ...
Nach Tonnen von Forschung, die, wie ich glaube, hat etwas zu tun mit der Länge des Schlüssels. Den key hab ich von WinSCP, wenn die Verbindung mit seiner Schnittstelle unter "Server-und Protokoll-Informationen" ist
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
aber die, die ich sah in dem Beispiel ist kürzer wie das xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Kann mir bitte jemand helfen und mir alle Zeiger zu lösen, dies würde sehr geschätzt werden.
Hier ist mein code
string winscpPath = "C:\\Program Files (x86)\\WinSCP\\WinSCP.exe";
string username = "User123";
string password = "abc1234";
string ftpSite = "192.168.5.110";
string localPath = "C:\\Users\\ttom\\Documents";
string remoteFTPDirectory = "/Usr/thisfolder";
string sshKey = "1b:68:10:80:77:c6:65:91:51:31:5t:65:1c:g6:13:20:39:g8:d8:6d";
Boolean winSCPLog = true;
string winSCPLogPath = "C:\\Users\\ttom\\Documents\\Visual Studio 2015\\Projects\\WebApplication1\\WebApplication1";
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = ftpSite,
UserName = username,
Password = password,
SshHostKeyFingerprint = sshKey
};
using (Session session = new Session())
{
//WinSCP .NET assembly must be in GAC to be used with SSIS,
//set path to WinSCP.exe explicitly, if using non-default path.
session.ExecutablePath = winscpPath;
session.DisableVersionCheck = true;
if (winSCPLog)
{
session.SessionLogPath = @winSCPLogPath + @"ftplog.txt";
session.DebugLogPath = @winSCPLogPath + @"debuglog.txt";
}
//Connect
session.Timeout = new TimeSpan(0, 2, 0); //two minutes
session.Open(sessionOptions);
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
session.GetFiles(remoteFTPDirectory + "/" +
"test.txt", localPath, false, transferOptions);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie die Verbindung über SFTP (über SSH) in den code, aber mit FTPS (FTP über TLS/SSL) in der GUI.
Diese sind zwei völlig verschiedene Protokolle.
Verwenden
Protokoll = Protokoll.Ftp
und aktivieren Sie TLS/SSL mitFtpSecure = FtpSecure.Explicit
.Einen Gegenwert von
SshHostKeyFingerprint
für FTPS istTlsHostCertificateFingerprint
. Aber Sie müssen verwenden Sie es nur, wenn die TLS/SSL-Zertifikat nicht signiert von einer vertrauenswürdigen Stelle (z.B. ein selbst signiertes Zertifikat).Die einfachste ist WinSCP GUI-code generieren für Sie.
Arbeite ich an einer ähnlichen Aufgabe. Haben Sie versucht, die Verwendung des Präfixes 'ssh-rsa', um den Fingerabdruck-Zeichenfolge?
Alles scheint zu funktionieren, auf mein Ende, so das führt mich zu glauben, dass es zwei Dinge gibt, könnte Los sein hier.
Ihnen fehlen könnte Teil der Authentifizierungs-string:
und/oder
Verwenden Sie zwei Protokolle. SFTP und FTPS
Hatte ich auch den gleichen Fehler. In meinem Fall habe ich vor dem PC, dass ich kopiert den SSH-Fingerabdruck-Schlüssel aus ausgeführt wurde, eine neuere version von WinSCP als die, die ich hatte auf meinem Entwicklungs-PC.
Aktualisierung der WinSCP.exe und WinSCPnet.DLL Dateien auf meinem Dev PC behoben das Problem für mich.