Miało miejsce pierwsze znaczące wydanie serwera SFTPGo 1.0, który umożliwia organizację zdalnego dostępu do plików przy użyciu protokołów SFTP, SCP/SSH i Rsync. SFTPGo może służyć między innymi do zapewnienia dostępu do repozytoriów Git za pomocą protokołu SSH. Dane można przesyłać zarówno z lokalnego systemu plików, jak i z pamięci zewnętrznej kompatybilnej z Amazon S3 i Google Cloud Storage. Do przechowywania bazy danych i metadanych użytkowników wykorzystywane są systemy DBMS obsługujące SQL lub format klucz/wartość, takie jak PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x lub bbolt 1.3.x. Dostępny jest także tryb przechowywania metadanych w pamięci RAM, który nie wymaga podłączenia zewnętrznej bazy danych. Kod projektu jest napisany w Go i dystrybuowane przez licencjonowany na licencji GPLv3.
Najważniejsze cechy:
Każde konto jest chrootowane, co ogranicza dostęp do katalogu domowego użytkownika. Możliwe jest tworzenie katalogów wirtualnych, które odwołują się do danych poza katalogiem domowym użytkownika.
Konta przechowywane są w wirtualnej bazie danych użytkowników, która nie krzyżuje się z systemową bazą danych użytkowników. SQLite, MySQL, PostgreSQL, bbolt i pamięć w pamięci mogą być używane do przechowywania baz danych użytkowników. Zapewnione są środki do mapowania kont wirtualnych i systemowych - możliwe jest mapowanie bezpośrednie lub dowolne (jeden użytkownik systemu może być mapowany na innego użytkownika wirtualnego).
Obsługiwane jest uwierzytelnianie kluczem publicznym, kluczem SSH i hasłem (w tym uwierzytelnianie interaktywne z wprowadzaniem hasła z klawiatury). Możliwe jest przypisanie kilku kluczy dla każdego użytkownika, a także skonfigurowanie uwierzytelniania wieloskładnikowego i wieloetapowego (np. w przypadku udanej autoryzacji kluczem może być dodatkowo wymagane hasło).
Istnieje możliwość skonfigurowania różnych metod uwierzytelniania dla każdego użytkownika, a także zdefiniowania własnych metod realizowanych poprzez wywoływanie zewnętrznych programów uwierzytelniających (np. do uwierzytelniania przez LDAP) lub wysyłanie żądań poprzez HTTP API.
Możliwe jest podłączenie zewnętrznych handlerów lub wywołań API HTTP w celu dynamicznej zmiany parametrów użytkownika, wywoływanych przed zalogowaniem użytkownika. Utrzymany dynamiczny tworzenie użytkowników po połączeniu.
Obsługa indywidualnych limitów rozmiaru danych i liczby plików.
Obsługa ograniczania przepustowości z osobnymi ustawieniami limitów ruchu przychodzącego i wychodzącego, a także limitów liczby jednoczesnych połączeń.
Narzędzia kontroli dostępu, które działają w odniesieniu do użytkownika lub katalogu (możesz ograniczyć przeglądanie listy plików, zabronić przesyłania, pobierania, nadpisywania, usuwania, zmiany nazwy lub praw dostępu, zabronić tworzenia katalogów lub dowiązań symbolicznych itp.).
Dla każdego użytkownika możesz zdefiniować indywidualne ograniczenia sieciowe, na przykład możesz zezwolić na dostęp tylko z określonych adresów IP lub podsieci.
Obsługuje łączenie filtrów treści do pobrania w odniesieniu do poszczególnych użytkowników i katalogów (np. można zablokować pobieranie plików z określonym rozszerzeniem).
Możesz powiązać programy obsługi, które są uruchamiane podczas różnych operacji z plikiem (ładowanie, usuwanie, zmiana nazwy itp.). Oprócz obsługi wywoływania obsługiwane jest wysyłanie powiadomień w postaci żądań HTTP.
Automatyczne zakończenie nieaktywnych połączeń.
Atomowa aktualizacja konfiguracji bez zrywania połączeń.
Dostarczanie metryki do monitorowania w Prometheusie.
Protokół HAProxy PROXY jest obsługiwany w celu organizowania równoważenia obciążenia lub połączeń proxy z usługami SFTP/SCP bez utraty wiedzy o źródłowym adresie IP użytkownika.
REST API do zarządzania użytkownikami i katalogami, tworzenia kopii zapasowych i generowania raportów o aktywnych połączeniach.
interfejs sieciowy (http://127.0.0.1:8080/web) do konfiguracji i monitorowania (obsługiwana jest również konfiguracja za pomocą zwykłych plików konfiguracyjnych).
Możliwość definiowania ustawień w formatach JSON, TOML, YAML, HCL i envfile.
Wsparcie połączenia poprzez SSH z ograniczonym dostępem do poleceń systemowych. Przykładowo dozwolone jest uruchamianie poleceń niezbędnych dla Gita (git-receive-pack, git-upload-pack, git-upload-archive) i rsync, a także kilku wbudowanych poleceń (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy i sftpgo-remove).
Tryb przenośny udostępnianie jednego wspólnego katalogu z automatycznym generowaniem poświadczeń połączeń ogłaszanych za pośrednictwem multiemisji DNS.