Ha avuto luogo il primo rilascio significativo del server SFTPGo 1.0, che consente di organizzare l'accesso remoto ai file utilizzando i protocolli SFTP, SCP/SSH e Rsync. Tra le altre cose, SFTPGo può essere utilizzato per fornire l'accesso ai repository Git utilizzando il protocollo SSH. I dati possono essere trasferiti sia dal file system locale che da storage esterno compatibile con Amazon S3 e Google Cloud Storage. Per archiviare il database utente e i metadati vengono utilizzati DBMS con supporto per SQL o formato chiave/valore, come PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x o bbolt 1.3.x. Esiste anche una modalità per archiviare i metadati nella RAM, che non richiede la connessione a un database esterno. Il codice del progetto è scritto in Go and distribuito da concesso in licenza con GPLv3.
Caratteristiche principali:
Ogni account è chroot, limitando l'accesso alla directory home dell'utente. È possibile creare directory virtuali che fanno riferimento a dati esterni alla home directory dell'utente.
Gli account vengono archiviati in un database utente virtuale che non si sovrappone al database utenti di sistema. È possibile utilizzare SQLite, MySQL, PostgreSQL, bbolt e archiviazione in memoria per archiviare i database utente. Sono fornite funzionalità per la mappatura degli account virtuali e di sistema: è possibile la mappatura diretta o casuale (un utente di sistema può essere mappato su un altro utente virtuale).
È supportata l'autenticazione tramite chiavi pubbliche, chiavi SSH e password (inclusa l'autenticazione interattiva con una password inserita dalla tastiera). È possibile associare più chiavi per ciascun utente, nonché impostare l'autenticazione a più fattori e a più passaggi (ad esempio, in caso di autenticazione della chiave riuscita, può essere richiesta anche una password).
Per ciascun utente è possibile configurare diversi metodi di autenticazione, nonché definire metodi propri, implementati chiamando programmi di autenticazione esterni (ad esempio, per l'autenticazione tramite LDAP) o inviando richieste tramite l'API HTTP.
È possibile connettere gestori esterni o chiamate API HTTP per modificare dinamicamente i parametri utente, chiamati prima che l'utente effettui l'accesso. Supportato dinamico creazione di utenti al momento della connessione.
Supporta quote individuali per la dimensione dei dati e il numero di file.
Supporto per la limitazione della larghezza di banda con configurazione separata delle restrizioni per il traffico in entrata e in uscita, nonché restrizioni sul numero di connessioni simultanee.
Strumenti di controllo dell'accesso che operano in relazione a un utente o a una directory (è possibile limitare la visualizzazione di un elenco di file, vietare il caricamento, il download, la sovrascrittura, l'eliminazione, la ridenominazione o la modifica dei diritti di accesso, vietare la creazione di directory o collegamenti simbolici, ecc.).
Per ciascun utente è possibile definire restrizioni di rete individuali, ad esempio è possibile consentire l'accesso solo da determinati IP o sottoreti.
Supporta il collegamento di filtri per i contenuti scaricati in relazione a singoli utenti e directory (ad esempio, puoi bloccare il download di file con una determinata estensione).
È possibile associare a un file i gestori avviati durante varie operazioni (download, eliminazione, rinomina, ecc.). Oltre ai gestori delle chiamate, è supportato l'invio di notifiche sotto forma di richieste HTTP.
Terminazione automatica delle connessioni inattive.
Aggiornamento atomico della configurazione senza interrompere le connessioni.
fornendo metriche per il monitoraggio in Prometheus.
Il protocollo HAProxy PROXY è supportato per organizzare il bilanciamento del carico o le connessioni proxy ai servizi SFTP/SCP senza perdere informazioni sull'indirizzo IP di origine dell'utente.
API REST per gestire utenti e directory, creare backup e generare report sulle connessioni attive.
interfaccia web (http://127.0.0.1:8080/web) per la configurazione e il monitoraggio (è supportata anche la configurazione tramite normali file di configurazione).
Possibilità di definire le impostazioni nei formati JSON, TOML, YAML, HCL e envfile.
Sostegno connessioni tramite SSH con accesso limitato ai comandi di sistema. Ad esempio, è consentito eseguire i comandi necessari per Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, nonché diversi comandi integrati (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy e sftpgo-remove).
regime portatile per condividere una directory comune con generazione automatica di credenziali di connessione pubblicizzate tramite DNS multicast.
Sistema incorporato profilazione per l'analisi delle prestazioni.
Semplificato processo migrazione degli account del sistema Linux.