O primeiro lançamento significativo do servidor ocorreu SFTPGo 1.0, que permite organizar o acesso remoto a arquivos usando os protocolos SFTP, SCP/SSH e Rsync. Entre outras coisas, SFTPGo pode ser usado para fornecer acesso a repositórios Git usando o protocolo SSH. Os dados podem ser transferidos tanto do sistema de arquivos local quanto de armazenamento externo compatível com Amazon S3 e Google Cloud Storage. Para armazenar o banco de dados e metadados do usuário, são utilizados SGBDs com suporte a SQL ou formato chave/valor, como PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x ou bbolt 1.3.x. Também existe um modo de armazenamento de metadados na RAM, que não requer conexão com um banco de dados externo. O código do projeto é escrito em Go e distribuído por licenciado sob GPLv3.
Características principais:
Cada conta é chroot, limitando o acesso ao diretório inicial do usuário. É possível criar diretórios virtuais que façam referência a dados fora do diretório inicial do usuário.
As contas são armazenadas em um banco de dados de usuários virtual que não se sobrepõe ao banco de dados de usuários do sistema. SQLite, MySQL, PostgreSQL, bbolt e armazenamento na memória podem ser usados para armazenar bancos de dados de usuários. São fornecidas facilidades para mapear contas virtuais e de sistema - é possível mapear diretamente ou aleatoriamente (um usuário do sistema pode ser mapeado para outro usuário virtual).
A autenticação usando chaves públicas, chaves SSH e senhas é suportada (incluindo autenticação interativa com uma senha inserida no teclado). É possível vincular várias chaves para cada usuário, bem como configurar a autenticação multifator e multietapas (por exemplo, no caso de autenticação de chave bem-sucedida, uma senha pode ser solicitada adicionalmente).
Para cada usuário é possível configurar diferentes métodos de autenticação, bem como definir métodos próprios, implementados chamando programas autenticadores externos (por exemplo, para autenticação via LDAP) ou enviando solicitações via API HTTP.
É possível conectar manipuladores externos ou chamadas de API HTTP para alterar dinamicamente os parâmetros do usuário, chamados antes do login do usuário. Suportado dinâmico criando usuários na conexão.
Suporta cotas individuais para tamanho de dados e número de arquivos.
Suporte para limitação de largura de banda com configuração separada de restrições para tráfego de entrada e saída, bem como restrições ao número de conexões simultâneas.
Ferramentas de controle de acesso que operam em relação a um usuário ou diretório (você pode limitar a visualização de uma lista de arquivos, proibir upload, download, sobrescrever, excluir, renomear ou alterar direitos de acesso, proibir a criação de diretórios ou links simbólicos, etc.).
Para cada usuário, você pode definir restrições de rede individuais, por exemplo, você só pode permitir logins de determinados IPs ou sub-redes.
Ele suporta a conexão de filtros para conteúdo baixado em relação a usuários e diretórios individuais (por exemplo, você pode bloquear o download de arquivos com uma determinada extensão).
É possível vincular manipuladores que são iniciados durante várias operações com um arquivo (baixar, excluir, renomear, etc.). Além de chamar manipuladores, há suporte para o envio de notificações na forma de solicitações HTTP.
Encerramento automático de conexões inativas.
Atualização de configuração atômica sem interromper conexões.
Provisão métricas para monitoramento no Prometheus.
O protocolo HAProxy PROXY é compatível para organizar balanceamento de carga ou conexões proxy para serviços SFTP/SCP sem perder informações sobre o endereço IP de origem do usuário.
API REST para gerenciar usuários e diretórios, criar backups e gerar relatórios sobre conexões ativas.
interface web (http://127.0.0.1:8080/web) para configuração e monitoramento (a configuração por meio de arquivos de configuração regulares também é suportada).
Capacidade de definir configurações nos formatos JSON, TOML, YAML, HCL e envfile.
apoio conexões via SSH com acesso limitado aos comandos do sistema. Por exemplo, é permitido executar comandos necessários para Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, bem como vários comandos integrados (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy e sftpgo-remove).
regime portátil para compartilhar um diretório comum com geração automática de credenciais de conexão anunciadas via DNS multicast.
Sistema incorporado perfil para análise de desempenho.
Simplificado processo migração de contas do sistema Linux.