La première version importante du serveur a été publiée. , permettant d'organiser l'accès à distance aux fichiers via les protocoles SFTP, SCP/SSH et Rsync. SFTPGo peut également être utilisé pour fournir un accès aux dépôts Git en utilisant le protocole SSH. Les données peuvent être récupérées à partir du système de fichiers local ou de stockages externes compatibles avec Amazon S3 et Google Cloud Storage. Pour stocker la base d'utilisateurs et les métadonnées, des bases de données avec support SQL ou en format clé/valeur, telles que PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x ou . Il existe également un mode de stockage des métadonnées en mémoire vive, ne nécessitant pas de connexion à une base de données externe. Le code du projet est écrit en Go et sous licence GPLv3.
Caractéristiques principales :
- Pour chaque compte, une isolation chroot est appliquée, limitant l'accès au répertoire personnel de l'utilisateur. Il est possible de créer des répertoires virtuels, faisant référence à des données en dehors du répertoire personnel de l'utilisateur.
- Les comptes sont stockés dans une base de données virtuelle d'utilisateurs, séparée de la base de données système des utilisateurs. SQLite, MySQL, PostgreSQL, bbolt et le stockage en mémoire peuvent être utilisés pour gérer la base de données des utilisateurs. Des outils sont fournis pour faire correspondre les comptes virtuels et systèmes — il est possible d'effectuer une correspondance directe ou arbitraire (un utilisateur système peut être associé à un autre utilisateur virtuel).
- L'authentification par clés publiques, clés SSH et mots de passe est prise en charge (y compris l'authentification interactive avec saisie du mot de passe via le clavier). Il est possible d'associer plusieurs clés à chaque utilisateur, ainsi que de configurer une authentification multifactorielle et par étapes (par exemple, en cas d'authentification réussie par clé, un mot de passe peut être demandé en complément).
- Pour chaque utilisateur, il est possible de configurer différents méthodes d'authentification, ainsi que de définir des méthodes personnalisées, mises en œuvre par des appels à des programmes d'authentification externes (par exemple, pour l'authentification via LDAP) ou l'envoi de requêtes via l'API HTTP.
- Il est possible de connecter des gestionnaires externes ou d'effectuer des appels API HTTP pour modifier dynamiquement les paramètres des utilisateurs, appelés avant la connexion de l'utilisateur. La prise en charge de d'utilisateurs lors de la connexion est également disponible.
- Prise en charge des quotas individuels pour la taille des données et le nombre de fichiers.
- Prise en charge de la limitation de la bande passante avec configuration séparée pour le trafic entrant et sortant, ainsi que des limitations sur le nombre de connexions simultanées.
- Moyens de contrôle d'accès agissant en fonction de l'utilisateur ou du répertoire (il est possible de restreindre l'affichage de la liste des fichiers, d'interdire le téléchargement, le transfert, la réécriture, la suppression, le renommage ou la modification des droits d'accès, d'interdire la création de répertoires ou de liens symboliques, etc.).
- Pour chaque utilisateur, il est possible de définir des limitations réseau individuelles, par exemple, permettre l'accès uniquement à partir de certaines adresses IP ou sous-réseaux.
- Prise en charge de la connexion de filtres de contenu téléchargé en fonction des utilisateurs individuels et des répertoires (par exemple, il est possible de bloquer le téléchargement de fichiers avec une certaine extension).
- Il est possible de lier des gestionnaires qui s'exécutent lors de différentes opérations sur le fichier (téléchargement, suppression, renommage, etc.). En plus de l'appel des gestionnaires, il est pris en charge l'envoi de notifications sous forme de requêtes HTTP.
- Fermeture automatique des connexions inactives.
- Mise à jour atomique de la configuration sans interruption des connexions.
- de métriques pour la surveillance dans Prometheus.
- Prise en charge du protocole HAProxy PROXY pour organiser l'équilibrage de charge ou le proxy des connexions vers les services SFTP/SCP sans perte d'informations sur l'adresse IP d'origine de l'utilisateur.
- pour la gestion des utilisateurs et des répertoires, la création de sauvegardes et la génération de rapports sur les connexions actives.
- (http://127.0.0.1:8080/web) pour la configuration et la surveillance (la configuration par des fichiers de configuration ordinaires est également prise en charge).
- Possibilité de définir des paramètres dans les formats JSON, TOML, YAML, HCL et envfile.
- connexion SSH avec accès restreint aux commandes système. Par exemple, le lancement de commandes nécessaires au fonctionnement de Git (git-receive-pack, git-upload-pack, git-upload-archive) et rsync, ainsi que plusieurs commandes intégrées (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy et sftpgo-remove) est autorisé.
- Mode pour le partage d'un répertoire commun avec génération automatique des identifiants de connexion, annoncés via multicast DNS.
- Système intégré pour l'analyse des performances.
- Processus simplifié migration des comptes système Linux.
- des journaux au format JSON.
Source : opennet.ru
