Produciuse a primeira versión significativa do servidor SFTPGo 1.0, que lle permite organizar o acceso remoto aos ficheiros mediante os protocolos SFTP, SCP/SSH e Rsync. Entre outras cousas, SFTPGo pódese usar para proporcionar acceso aos repositorios Git mediante o protocolo SSH. Os datos pódense transferir tanto desde o sistema de ficheiros local como desde o almacenamento externo compatible con Amazon S3 e Google Cloud Storage. Para almacenar a base de datos do usuario e os metadatos, utilízanse DBMS con soporte para SQL ou formato de clave/valor, como PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x ou bbolt 1.3.x. Tamén hai un modo para almacenar metadatos na RAM, que non require conectar unha base de datos externa. O código do proxecto está escrito en Go e distribuído por licenciado baixo GPLv3.
Características clave:
Cada conta está chrooteada, o que limita o acceso ao directorio de inicio do usuario. É posible crear directorios virtuais que fan referencia a datos fóra do directorio de inicio do usuario.
As contas gárdanse nunha base de datos de usuarios virtual que non se solapa coa base de datos de usuarios do sistema. Pódense usar SQLite, MySQL, PostgreSQL, bbolt e o almacenamento en memoria para almacenar bases de datos de usuarios. Ofrécense instalacións para mapear contas virtuais e do sistema: é posible mapear directamente ou aleatoriamente (pódese asignar un usuario do sistema a outro usuario virtual).
Admítese a autenticación mediante chaves públicas, claves SSH e contrasinais (incluída a autenticación interactiva cun contrasinal introducido desde o teclado). É posible vincular varias claves para cada usuario, así como configurar a autenticación de varios factores e de varios pasos (por exemplo, no caso de que a autenticación de claves teña éxito, pódese solicitar adicionalmente un contrasinal).
Para cada usuario, é posible configurar diferentes métodos de autenticación, así como definir os seus propios métodos, implementados chamando a programas de autenticación externos (por exemplo, para a autenticación mediante LDAP) ou enviando solicitudes a través da API HTTP.
É posible conectar controladores externos ou chamadas API HTTP para cambiar dinámicamente os parámetros do usuario, chamado antes de que o usuario inicie sesión. Soportado dinámico creando usuarios ao conectarse.
Admite cotas individuais para o tamaño dos datos e o número de ficheiros.
Soporte para limitar o ancho de banda con configuración separada de restricións para o tráfico entrante e saínte, así como restricións sobre o número de conexións simultáneas.
Ferramentas de control de acceso que operan en relación a un usuario ou directorio (pode limitar a visualización dunha lista de ficheiros, prohibir a carga, descarga, sobrescritura, eliminación, renomeado ou cambio de dereitos de acceso, prohibir a creación de directorios ou ligazóns simbólicas, etc.).
Para cada usuario, pode definir restricións de rede individuais, por exemplo, só pode permitir inicios de sesión desde determinadas IP ou subredes.
Admite filtros de conexión para o contido descargado en relación con usuarios e directorios individuais (por exemplo, pode bloquear a descarga de ficheiros cunha extensión determinada).
É posible vincular controladores que se inician durante varias operacións cun ficheiro (descargar, eliminar, renomear, etc.). Ademais de chamar aos controladores, é compatible o envío de notificacións en forma de solicitudes HTTP.
Terminación automática de conexións inactivas.
Actualización da configuración atómica sen interromper as conexións.
O protocolo HAProxy PROXY é compatible para organizar o equilibrio de carga ou as conexións de proxy aos servizos SFTP/SCP sen perder información sobre o enderezo IP de orixe do usuario.
API REST para xestionar usuarios e directorios, crear copias de seguridade e xerar informes sobre conexións activas.
Interface web (http://127.0.0.1:8080/web) para a configuración e monitorización (tamén se admite a configuración mediante ficheiros de configuración habituais).
Capacidade de definir axustes en formatos JSON, TOML, YAML, HCL e envfile.
Apoiar conexións vía SSH con acceso limitado aos comandos do sistema. Por exemplo, permítese executar os comandos necesarios para Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, así como varios comandos integrados (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy e sftpgo-remove).
Modo portátil para compartir un directorio común coa xeración automática de credenciais de conexión anunciadas a través de DNS multicast.
Sistema embebido perfilado para a análise do rendemento.
Simplificado proceso migración de contas do sistema Linux.