Kann nicht bekommen SharpSSH per FTP zu verbinden
Frage
Ich habe Probleme beim Herstellen einer sicheren FTP-Verbindung mit SharpSSH. Bis jetzt habe ich die DOS-Kommandozeile app MOVEit wurde mit frei, die Verbindung herzustellen, und es schließt fein:
C:\> ftps -user:ABC -password:123 xxx.xxx.xxx.mil
Allerdings, wenn ich versuche, die gleiche Sache mit SharpSSH zu tun, erhalte ich einen Fehler, der entweder die Verbindung sagt abgelaufen oder der Server reagiert nicht korrekt:
Dim sftp = New Tamir.SharpSsh.Sftp("xxx.xxx.xxx.mil", "ABC", "123")
sftp.Connect()
oder
Dim host = New Tamir.SharpSsh.SshStream("xxx.xxx.xxx.mil", "ABC", "123")
Jede Idee, was ich tun könnte falsch, oder wie ich konnte herausfinden, was andernfalls?
Beachten Sie, dass ich eine sichere FTP-Verbindung benötigen, so dass die .NET-Klassen keine Option sind. Ich bin bereit, Alternativen zu versuchen, SharpSSH wenn sie allerdings vorhanden sein.
Lösung
Sie verwenden Tamir.SharpSsh, die eine SSH-Bibliothek ist. Allerdings sieht es aus wie Sie FTPS verbinden (oder FTP / SSL) Server. Die FTPS ist völlig anderes Protokoll und hat nichts gemein mit SFTP noch SSH.
Im Anschluss an Seite auf unserer Website beschreibt die Unterschiede zwischen FTP, FTP / SSL, FTPS und SFTP-Protokollen: Rebex File Transfer-Pack Komponente, die sowohl SFTP unterstützt und FTPS-Protokolle (aber es kostet etwas Geld im Gegensatz zu dem SharpSSH).
Verbindung zum FTP / SSL-Server würde wie folgt aussehen:
' Create an instance of the Ftp class.
Dim ftp As New Ftp()
' Connect securely using explicit SSL.
' Use the third argument to specify additional SSL parameters.
ftp.Connect(hostname, 21, Nothing, FtpSecurity.Explicit)
' Connection is protected now, we can log in safely.
ftp.Login(username, password)
Andere Tipps
Eine weitere gute Alternative (auch nicht kostenlos) ist edtFTPnet / PRO , eine stabile, ausgereifte Bibliothek, die für FTPS (und SFTP) in .NET volle Unterstützung bietet.
Hier ist ein Beispielcode für den Anschluss:
SecureFTPConnection ftpConnection = new SecureFTPConnection();
// setting server address and credentials
ftpConnection.ServerAddress = "xxx.xxx.xxx.mil";
ftpConnection.UserName = "ABC";
ftpConnection.Password = "123";
// select explicit FTPS
ftpConnection.Protocol = FileTransferProtocol.FTPSExplicit;
// switch off server validation (only do this when testing)
ftpConnection.ServerValidation = SecureFTPServerValidationType.None;
// connect to server
ftpConnection.Connect();