Prima lansare semnificativă a serverului a avut loc , care vă permite să organizați accesul de la distanță la fișiere folosind protocoalele SFTP, SCP/SSH și Rsync. Printre altele, SFTPGo poate fi folosit pentru a oferi acces la depozitele Git folosind protocolul SSH. Datele pot fi transferate atât din sistemul de fișiere local, cât și din stocarea externă compatibilă cu Amazon S3 și Google Cloud Storage. Pentru a stoca baza de date și metadatele utilizatorului, sunt utilizate SGBD-uri cu suport pentru SQL sau formatul cheie/valoare, cum ar fi PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x sau . Există, de asemenea, un mod de stocare a metadatelor în RAM, care nu necesită conectarea unei baze de date externe. Codul proiectului este scris în Go și licențiat conform GPLv3.
Caracteristici principale:
- Fiecare cont este chrootat, limitând accesul la directorul principal al utilizatorului. Este posibil să se creeze directoare virtuale care să facă referire la date din afara directorului principal al utilizatorului.
- Conturile sunt stocate într-o bază de date virtuală a utilizatorilor care nu se suprapune cu baza de date a utilizatorilor sistemului. SQLite, MySQL, PostgreSQL, bbolt și stocarea în memorie pot fi folosite pentru a stoca bazele de date ale utilizatorilor. Sunt furnizate facilități pentru maparea conturilor virtuale și de sistem - este posibilă maparea directă sau aleatorie (un utilizator de sistem poate fi mapat la alt utilizator virtual).
- Este acceptată autentificarea folosind chei publice, chei SSH și parole (inclusiv autentificarea interactivă cu o parolă introdusă de la tastatură). Este posibil să legați mai multe chei pentru fiecare utilizator, precum și să configurați autentificarea cu mai mulți factori și mai mulți pași (de exemplu, în cazul autentificării cu succes a cheii, poate fi solicitată suplimentar o parolă).
- Pentru fiecare utilizator, este posibil să configurați diferite metode de autentificare, precum și să vă definiți propriile metode, implementate prin apelarea unor programe de autentificare externe (de exemplu, pentru autentificare prin LDAP) sau prin trimiterea de solicitări prin API-ul HTTP.
- Este posibil să conectați handlere externi sau apeluri HTTP API pentru a modifica dinamic parametrii utilizatorului, apelați înainte ca utilizatorul să se conecteze. Sprijinit crearea de utilizatori la conectare.
- Suportă cote individuale pentru dimensiunea datelor și numărul de fișiere.
- Suport pentru limitarea lățimii de bandă cu configurație separată a restricțiilor pentru traficul de intrare și de ieșire, precum și restricții privind numărul de conexiuni simultane.
- Instrumente de control al accesului care funcționează în legătură cu un utilizator sau director (puteți limita vizualizarea unei liste de fișiere, interziceți încărcarea, descărcarea, suprascrierea, ștergerea, redenumirea sau modificarea drepturilor de acces, interziceți crearea de directoare sau legături simbolice etc.).
- Pentru fiecare utilizator, puteți defini restricții individuale de rețea, de exemplu, puteți permite autentificarea numai de la anumite IP-uri sau subrețele.
- Acceptă filtre de conectare pentru conținutul descărcat în raport cu utilizatorii și directoarele individuale (de exemplu, puteți bloca descărcarea fișierelor cu o anumită extensie).
- Este posibil să legați handlerele care sunt lansate în timpul diferitelor operațiuni cu un fișier (descărcare, ștergere, redenumire etc.). Pe lângă apelarea gestionarilor, este acceptată trimiterea de notificări sub formă de solicitări HTTP.
- Încetarea automată a conexiunilor inactive.
- Actualizarea configurației atomice fără a întrerupe conexiunile.
- metrici pentru monitorizare în Prometheus.
- Protocolul HAProxy PROXY este acceptat pentru a organiza echilibrarea sarcinii sau conexiunile proxy la serviciile SFTP/SCP fără a pierde informații despre adresa IP sursă a utilizatorului.
- să gestioneze utilizatorii și directoarele, să creeze copii de siguranță și să genereze rapoarte privind conexiunile active.
- (http://127.0.0.1:8080/web) pentru configurare și monitorizare (este acceptată și configurarea prin fișiere de configurare obișnuite).
- Abilitatea de a defini setări în formate JSON, TOML, YAML, HCL și envfile.
- conexiuni prin SSH cu acces limitat la comenzile sistemului. De exemplu, este permisă rularea comenzilor necesare pentru Git (git-receive-pack, git-upload-pack, git-upload-archive) și rsync, precum și mai multe comenzi încorporate (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy și sftpgo-remove).
- regim pentru a partaja un director comun cu generarea automată de acreditări de conexiune anunțate prin DNS multicast.
- Sistem incorporat pentru analiza performantelor.
- Simplificat migrarea conturilor de sistem Linux.
- jurnalele în format JSON.
Sursa: opennet.ru
