Home / Programmazione / C# - Asp.NET / Connessione SFTP con C#
Mattepuffo

Connessione SFTP con C#

Connessione SFTP con C#

SFTP è l'implementazione sicura del protocollo FTP; in pratica usa SSH come canale di comunicazione.

Oggi vediamo come connetterci, e fare l'upload di file, su un server SFTP tramite C#.

Di default non sono previste classi e oggetti preposti a questa operazione; dobbiamo rivolgerci quindi ad una libreria esterna.

Io ho usato questa: SharpSSH.

Scaricatela e aggiungetela al progetto.

Nel mio caso specifico mi serve di fare l'upload, quindi vi posto la mia classe con l'unico metodo creato:

    class MySftp
    {
        public void upload(FileInfo[] files, string finalDir)
        {
            try
            {
                Sftp sftp = new Sftp("HOST", "USER", "PASSWORD");
                sftp.Connect(22003);
                string localPath = @"C:\txt_import\";
                foreach (FileInfo f in files)
                {
                    sftp.Put(localPath + f.ToString(), remotePath + f.Name);
                }
                sftp.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }

Il metodo upload richiede due parametri:

  • un array di FileInfo -> i file da caricare
  • il percorso del server remoto su cui caricare i file

Prima di tutto ci connettiamo creando un oggetto Sftp, e passando al costruttore i classici host, user e password.

Sotto indichiamo la porta, nel qual caso non fosse quella di default.

Poi cicliamo sull'array di FileInfo, e per ognuno invochiamo il metodo put, indicando il file locale e dove salvarlo nel server remoto.

Infine chiudiamo la connessione.

Come vedete è abbastanza banale, e questo perchè la libreria si occupa di buona parte delle operazioni.

Ci sarebbero da implementare alcuni controlli, ma vi lascio a voi il compito!!

Ciao!