tamir net libreria example conexion c# ftp ssh sftp

c# - net - Diferencias entre SFTP y "FTP sobre SSH"



ssh ftp c# (8)

Acabo de crear una .NET SFTP Library . Una de las cosas que aprendí en el proceso es qué tan diferente es FTP para SFTP. En realidad, se está comunicando con un servidor SSH en lugar de un servidor FTP. No es solo el protocolo, los comandos son totalmente diferentes que usted está enviando al servidor SSH.

Aquí hay un enlace a mi biblioteca.

Mientras busco un cliente SFTP en C # SSH File Transfer Protocol (SFTP), me he encontrado con estos dos proyectos adecuados: one y two .

Al tratar de entender lo básico, me encontré con este confuso artículo de Wikipedia . ¿Cuál es la diferencia entre SFTP y FTP sobre SSH? Ninguna biblioteca parece dar soporte para "FTP sobre SSH", si es diferente.


Aquí está la diferencia:

  • SFTP (protocolo de transferencia de archivos SSH) es un protocolo que proporciona capacidades de transferencia y manipulación de archivos. Puede funcionar sobre cualquier flujo de datos confiable, pero normalmente se usa con SSH
  • "FTP sobre SSH" usa el antiguo protocolo FTP normal, pero se coloca un túnel SSH entre el cliente y el servidor.

Probablemente no encontrará bibliotecas para "FTP sobre SSH" porque típicamente el túnel está configurado ejecutando un comando SSH, y una vez que está configurado, los clientes y servidores no necesitan saber sobre el túnel; solo abren puertos y transfieren datos de la forma que lo harían sin un túnel.

Por cierto, otra opción para usted podría ser FTP sobre SSL (FTPS) , que es compatible con .NET. (Consulte http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx ).


Básicamente, existen los siguientes protocolos de transferencia de archivos en torno a:

  • FTP: el antiguo y simple protocolo FTP que existe desde la década de 1970. El acrónimo significa "Protocolo de transferencia de archivos". Por lo general, se ejecuta en el puerto TCP 21.

  • SFTP: otro protocolo de transferencia de archivos completamente diferente que no tiene nada que ver con FTP. SFTP se ejecuta en una sesión SSH, generalmente en el puerto TCP 22. Ha estado presente desde finales de la década de 1990. El acrónimo en realidad significa "Protocolo de transferencia de archivos SSH".

  • FTP sobre SSH - 1) posible, pero un ejemplo extremadamente raro de protocolo FTP canalizado a través de un canal SSH 2) incorrectamente llamado SFTP

(para más información, consulte la página " Secure FTP, FTP / SSL, SFTP, FTPS, FTP, SCP ... ¿Cuál es la diferencia? " en Rebex )

Descargo de responsabilidad: trabajo para Rebex


He usado SharpSSH durante años y funciona muy bien. Aunque no ha visto ningún desarrollo en un tiempo, el código fuente es fácil de entender y trabajar. He hecho modificaciones y compilado de nuevo para mis propios proyectos sin problemas, aunque funciona perfectamente tal como está, sin la necesidad de nada de eso.

Si no necesita hacer nada sofisticado, también puede escribir su propio contenedor .NET para el cliente PSFTP.EXE de PuTTY con un código mínimo.

Aunque nunca he usado la biblioteca SFTP de Greg Finzer, lo conozco personalmente y creo firmemente que tiene un producto de calidad si necesita algo desarrollado y robusto. Pero para lo simple, he tenido un gran éxito con las opciones gratuitas que mencioné.


SFTP es en realidad otro protocolo que se ejecuta sobre SSH, una extensión de SSH si lo desea. La gente tiende a usar SFTP en lugar de tunelizar FTP a través de SSH.

Para obtener compatibilidad completa con SFTP en .NET, pruebe edtFTPnet/PRO . Ha sido durante mucho tiempo compatible con muchos servidores SFTP diferentes.


SFTP es su propio protocolo. FTP a través de SSH está utilizando FTP una vez que está conectado a través de SSH.


El FTP a través de SSH es un protocolo FTP simple en túnel a través de SSH. SFTP es el mecanismo de transferencia de archivos ofrecido por SSH y es un protocolo completamente diferente. No he visto a nadie usar FTP sobre SSH.


  • SFTP significa Protocolo de transferencia de archivos SSH. No es FTP sobre SSL y no FTP sobre SSH. SFTP está estandarizado en RFC 4253.
  • FTP significa Protocolo de transferencia de archivos que está definido por RFC 959 y adiciones posteriores. FTP es muy popular, pero no seguro. Por lo tanto, se introdujo FTP sobre SSL y se llama FTPS o FTP / SSL.

Para la autenticación, SFTP usa claves SSH, mientras que FTPS usa certificados X.509.