Domanda

Mentre cercavo un client SFTP in C # SSH File Transfer Protocol (SFTP), mi sono imbattuto in questi due progetti adatti - uno e due .

Mentre cercavo di capire le basi, mi sono imbattuto in questo Articolo di Wikipedia confuso a>. Qual è la differenza tra SFTP e FTP su SSH? Nessuna libreria sembra fornire supporto per "FTP su SSH", se diverso.

È stato utile?

Soluzione

Ecco la differenza:

  • SFTP (protocollo di trasferimento file SSH) è un protocollo che fornisce funzionalità di trasferimento e manipolazione dei file. Può funzionare su qualsiasi flusso di dati affidabile, ma in genere viene utilizzato con SSH
  • "FTP su SSH" utilizza il vecchio protocollo FTP normale, ma un tunnel SSH viene posizionato tra client e server.

Probabilmente non troverai librerie per " FTP su SSH " perché in genere il tunnel viene impostato eseguendo un comando SSH e, una volta impostato, i client e i server non devono conoscere il tunnel; semplicemente aprono le porte e trasferiscono i dati come farebbero senza un tunnel.

A proposito, un'altra opzione per te potrebbe essere FTP over SSL (FTPS) , che è supportato da .NET. (Vedi http://msdn.microsoft.com/en -us / library / system.net.ftpwebrequest.enablessl.aspx .)

Altri suggerimenti

Fondamentalmente, ci sono i seguenti protocolli di trasferimento dei file in giro:

  • FTP & # 8211; il semplice vecchio protocollo FTP che esiste dagli anni '70. L'acronimo sta per "File Transfer Protocol". Di solito funziona sulla porta TCP 21.

  • SFTP & # 8211; un altro protocollo di trasferimento file completamente diverso che non ha nulla a che fare con FTP. SFTP funziona su una sessione SSH, in genere sulla porta TCP 22. È in circolazione dalla fine degli anni '90. L'acronimo in realtà significa "protocollo di trasferimento file SSH".

  • FTP su SSH - 1) possibile, ma estremamente raro esempio di protocollo FTP incanalato attraverso un canale SSH 2) erroneamente chiamato SFTP

(per dettagli vedere " FTP sicuro, FTP / SSL, SFTP, FTPS, FTP, SCP ... Qual è la differenza? " pagina Rebex )

Dichiarazione di non responsabilità: lavoro per Rebex

SFTP è in realtà un altro protocollo che funziona su SSH - un'estensione di SSH, se lo desideri. Le persone tendono a usare SFTP anziché tunneling FTP su SSH.

Per un supporto SFTP completo in .NET, prova edtFTPnet / PRO . È passato molto tempo con il supporto per molti server SFTP diversi.

SFTP è il proprio protocollo. FTP su SSH utilizza FTP una volta connesso tramite SSH.

FTP su SSH è un semplice protocollo FTP tunnelizzato attraverso SSH. SFTP è il meccanismo di trasferimento dei file offerto da SSH ed è un protocollo completamente diverso. Non ho visto nessuno usare FTP su SSH.

  • SFTP sta per SSH File Transfer Protocol. Non è FTP su SSL e non FTP su SSH. SFTP è standardizzato in RFC 4253.
  • FTP è l'acronimo di File Transfer Protocol, definito da RFC 959 e successive aggiunte. FTP è molto popolare ma non sicuro. Pertanto è stato introdotto FTP over SSL e si chiama FTPS o FTP / SSL.

Per l'autenticazione SFTP utilizzare le chiavi SSH, mentre FTPS utilizza i certificati X.509.

Ho usato SharpSSH per anni e funziona benissimo. Sebbene non abbia visto alcuno sviluppo da un po 'di tempo, il codice sorgente è facile da capire e lavorare. Ho apportato modifiche e ricompilato senza problemi per i miei progetti, anche se funziona perfettamente così com'è, senza che sia necessario.

Se non hai bisogno di fare nulla di speciale, puoi anche scrivere il tuo wrapper .NET per il client PSFTP.EXE di PuTTY con un codice molto minimo.

Anche se non ho mai usato la libreria SFTP di Greg Finzer, lo conosco personalmente e credo fermamente che abbia un prodotto di qualità se hai bisogno di qualcosa di attivamente sviluppato e robusto. Ma per le cose semplici, ho avuto un grande successo con le opzioni gratuite che ho citato.

Ho appena creato una Libreria SFTP .NET . Una delle cose che ho imparato nel processo è la differenza tra FTP e SFTP. In realtà stai comunicando con un server SSH invece che con un server FTP. Non è solo il protocollo, i comandi sono totalmente diversi da inviare al server SSH.

Ecco un link alla mia biblioteca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top