No se puede obtener SharpSSH para conectarse a través de FTP
Pregunta
Estoy teniendo problemas para hacer una conexión FTP segura utilizando SharpSSH. Hasta ahora he estado usando la línea de comandos de DOS aplicación MOVEit libremente para hacer la conexión, y se conecta muy bien:
C:\> ftps -user:ABC -password:123 xxx.xxx.xxx.mil
Sin embargo, cuando trato de hacer lo mismo con SharpSSH, me sale un error que dice que o bien el tiempo de conexión o el servidor no responde correctamente:
Dim sftp = New Tamir.SharpSsh.Sftp("xxx.xxx.xxx.mil", "ABC", "123")
sftp.Connect()
o
Dim host = New Tamir.SharpSsh.SshStream("xxx.xxx.xxx.mil", "ABC", "123")
Cualquier idea de lo que podría estar haciendo mal, o cómo podría averiguar lo que está fallando?
Tenga en cuenta que necesito una conexión FTP segura, por lo que las clases .NET no son una opción. Estoy dispuesto a probar alternativas a SharpSSH si es que existen sin embargo.
Solución
está utilizando Tamir.SharpSsh, que es una biblioteca de SSH. Sin embargo, parece que se está conectando a FTPS (o FTP / SSL) del servidor. El FTPS es completamente diferente protocolo y no tiene nada común con SFTP ni SSH.
Después de la página en nuestro sitio web analiza las diferencias entre FTP, FTP / SSL, FTPS y SFTP protocolos: rebex.net/secure-ftp.net/ .
Breve resumen a continuación:
-
llanura FTP,, protocolo de transferencia de archivos inseguros de edad. Transferencias texto claro contraseña a través de la red.
-
FTPS - FTP sobre TLS / SSL cifrada canal. FTP y FTPS relación es similar a HTTP y HTTPS.
-
FTP / SSL - igual que FTPS
-
SFTP - SSH File Transfer Protocol. No tiene nada común con FTP (cuente con el nombre). Corre sobre SSH canal de comunicación cifrada.
-
FTP Secure - podría ser o bien SFTP o FTPS: - (
Puede intentar Rebex componente de transferencia de archivos Paquete , que es compatible con SFTP y protocolos FTPS (pero cuesta un poco de dinero a diferencia de la SharpSSH).
La conexión al servidor / SSL FTP se vería así:
' 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)
Otros consejos
Otra gran alternativa (que tampoco está libre) es edtFTPnet / PRO , una biblioteca estable, madura que ofrece soporte completo para FTPS (y SFTP) en .NET.
A continuación, algunos ejemplos de código para la conexión:
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();