Die erste bedeutende Veröffentlichung des Servers fand statt , der den Zugriff auf Dateien über die Protokolle SFTP, SCP/SSH und Rsync ermöglicht. SFTPGo kann auch verwendet werden, um Zugriff auf Git-Repositorys über das SSH-Protokoll zu gewähren. Daten können sowohl von lokalem Speicher als auch aus externen Speicherlösungen, die mit Amazon S3 und Google Cloud Storage kompatibel sind, bereitgestellt werden. Für die Speicherung der Benutzerdatenbank und Metadaten werden Datenbanksysteme mit SQL-Support oder Schlüssel/Wert-Format verwendet, wie PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x oder . Es gibt auch einen Modus zur Speicherung von Metadaten im Arbeitsspeicher, der keine externe Datenbankverbindung benötigt. Der Code des Projekts ist in Go geschrieben und unter Lizenz GPLv3.
Hauptmerkmale:
- Für jedes Benutzerkonto wird chroot-Isolierung angewendet, die den Zugriff auf das Heimatverzeichnis des Benutzers einschränkt. Es ist möglich, virtuelle Verzeichnisse zu erstellen, die auf Daten außerhalb des Heimatverzeichnisses des Benutzers verweisen.
- Benutzerkonten werden in einer virtuellen Benutzerdatenbank gespeichert, die nicht mit der systemweiten Benutzerdatenbank überlappt. Für die Speicherung der Benutzerdatenbank können SQLite, MySQL, PostgreSQL, bbolt und Speichern im Arbeitsspeicher verwendet werden. Es stehen Werkzeuge zur Verfügung, um virtuelle und systemweite Benutzerkonten abzugleichen – ein systemweiter Benutzer kann direkt oder beliebig einem anderen virtuellen Benutzer zugeordnet werden.
- Die Authentifizierung über öffentliche Schlüssel, SSH-Schlüssel und Passwörter wird unterstützt (einschließlich interaktiver Authentifizierung, bei der das Passwort über die Tastatur eingegeben wird). Es ist möglich, mehrere Schlüssel für jeden Benutzer zu binden, sowie die Einrichtung von Zwei-Faktor- und mehrstufiger Authentifizierung (zum Beispiel kann nach erfolgreicher Authentifizierung mit einem Schlüssel zusätzlich ein Passwort angefordert werden).
- Für jeden Benutzer können verschiedene Authentifizierungsmethoden eingerichtet werden, sowie eigene Methoden definiert werden, die über den Aufruf externer Authentifizierungsprogramme (zum Beispiel zur Authentifizierung über LDAP) oder über HTTP API-Anfragen umgesetzt werden.
- Es ist möglich, externe Handler oder HTTP API-Aufrufe anzuschließen, um die Benutzereinstellungen dynamisch zu ändern, die vor der Benutzeranmeldung aufgerufen werden. Unterstützt wird Erstellen von Benutzern bei der Anmeldung.
- Unterstützung individueller Datenquoten und Dateizahlen.
- Unterstützung von Bandbreitenbeschränkungen mit separaten Einstellungsmöglichkeiten für eingehenden und ausgehenden Datenverkehr sowie für die Anzahl gleichzeitiger Verbindungen.
- Zugangskontrollmechanismen, die an Benutzer oder Verzeichnisse gebunden sind (z. B. kann der Zugriff auf die Dateiliste eingeschränkt, der Upload, Download, das Überschreiben, Löschen, Umbenennen oder Ändern der Berechtigungen verboten und die Erstellung von Verzeichnissen oder symbolischen Links untersagt werden usw.).
- Für jeden Benutzer können individuelle Netzwerkbeschränkungen definiert werden, z. B. kann der Zugang nur von bestimmten IPs oder Subnetzen erlaubt werden.
- Unterstützung von Filterverbindungen für herunterladbare Inhalte, die an einzelne Benutzer und Verzeichnisse gebunden sind (z. B. kann der Download von Dateien mit bestimmten Erweiterungen blockiert werden).
- Es ist möglich, Handler zu binden, die bei verschiedenen Dateioperationen (Hochladen, Löschen, Umbenennen usw.) ausgelöst werden. Neben dem Aufrufen von Handlern wird auch das Versenden von Benachrichtigungen in Form von HTTP-Anfragen unterstützt.
- Automatisches Beenden inaktiver Verbindungen.
- Atomare Konfigurationsaktualisierung ohne Unterbrechung der Verbindungen.
- von Metriken zur Überwachung in Prometheus.
- Unterstützung des HAProxy PROXY-Protokolls für das Lastenausgleich oder das Proxying von Verbindungen zu SFTP/SCP-Diensten, ohne dass Informationen über die ursprüngliche IP-Adresse des Benutzers verloren gehen.
- zur Verwaltung von Benutzern und Verzeichnissen, Erstellung von Backups und Erstellung von Berichten über aktive Verbindungen.
- (http://127.0.0.1:8080/web) zur Konfiguration und Überwachung (es ist auch eine Konfiguration über normale Konfigurationsdateien möglich).
- Die Möglichkeit, Einstellungen im JSON-, TOML-, YAML-, HCL- und envfile-Format zu definieren.
- SSH-Verbindungen mit eingeschränktem Zugriff auf Systembefehle. Zum Beispiel sind Ausführungen von Befehlen, die für die Arbeit mit Git erforderlich sind (git-receive-pack, git-upload-pack, git-upload-archive) und rsync, sowie einiger integrierter Befehle (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy und sftpgo-remove) erlaubt.
- Modus für die gemeinsame Nutzung eines allgemeinen Verzeichnisses mit automatischer Generierung von Anmeldeinformationen für die Verbindung, die über multicast DNS angekündigt werden.
- Integriertes zur Leistungsanalyse.
- Vereinfachte Migration von Systembenutzerkonten in Linux.
- von Protokollen im JSON-Format.
Quelle: opennet.ru
