![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
github.com/carneles/sftpgo
Fully featured and highly configurable SFTP server, written in Go
SFTPGo is developed and tested on Linux. After each commit, the code is automatically built and tested on Linux and macOS using Travis CI. The test cases are regularly manually executed and passed on Windows. Other UNIX variants such as *BSD should work too.
Binary releases for Linux, macOS, and Windows are available. Please visit the releases page.
Sample Dockerfiles for Debian and Alpine are available inside the source tree docker directory.
Some Linux distro packages are available:
git
, gcc
and go
to build.git
, gcc
and go
to build.git
, gcc
and go
to build.Alternately, you can build from source.
A full explanation of all configuration methods can be found here.
Please make sure to initialize the data provider before running the daemon!
To start the SFTP server with default settings, simply run:
sftpgo serve
Check out this documentation if you want to run SFTPGo as a service.
Before starting the SFTPGo server, please ensure that the configured data provider is properly initialized.
SQL based data providers (SQLite, MySQL, PostgreSQL) require the creation of a database containing the required tables. Memory and bolt data providers do not require an initialization.
After configuring the data provider using the configuration file, you can create the required database structure using the initprovider
command.
For SQLite provider, the initprovider
command will auto create the database file, if missing, and the required tables.
For PostgreSQL and MySQL providers, you need to create the configured database, and the initprovider
command will create the required tables.
For example, you can simply execute the following command from the configuration directory:
sftpgo initprovider
Take a look at the CLI usage to learn how to specify a different configuration file:
sftpgo initprovider --help
The initprovider
command is enough for new installations. From now on, the database structure will be automatically checked and updated, if required, at startup.
If you are upgrading from version 0.9.5 or before, you have to manually execute the SQL scripts to create the required database structure. These scripts can be found inside the source tree sql directory. The SQL scripts filename is, by convention, the date as YYYYMMDD
and the suffix .sql
. You need to apply all the SQL scripts for your database ordered by name. For example, 20190828.sql
must be applied before 20191112.sql
, and so on.
Example for SQLite: find sql/sqlite/ -type f -iname '*.sql' -print | sort -n | xargs cat | sqlite3 sftpgo.db
.
After applying these scripts, your database structure is the same as the one obtained using initprovider
for new installations, so from now on, you don't have to manually upgrade your database anymore.
Custom authentication methods can easily be added. SFTPGo supports external authentication modules, and writing a new backend can be as simple as a few lines of shell script. More information can be found here.
Keyboard interactive authentication is, in general, a series of questions asked by the server with responses provided by the client. This authentication method is typically used for multi-factor authentication.
More information can be found here.
A user can be created or modified by an external program just before the login. More information about this can be found here.
SFTPGo allows you to configure custom commands and/or HTTP notifications on file upload, download, delete, rename, on SSH commands and on user add, update and delete.
More information about custom actions can be found here.
Each user can be mapped to whole bucket or to a bucket virtual folder. This way, the mapped bucket/virtual folder is exposed over SFTP/SCP. More information about S3 integration can be found here.
Each user can be mapped with a Google Cloud Storage bucket or a bucket virtual folder. This way, the mapped bucket/virtual folder is exposed over SFTP/SCP. More information about Google Cloud Storage integration can be found here.
Adding new storage backends is quite easy:
GetFilesystem
to return the new backendportable
modeAnyway, some backends require a pay per use account (or they offer free account for a limited time period only). To be able to add support for such backends or to review pull requests, please provide a test account. The test account must be available for enough time to be able to maintain the backend and do basic tests before each new release.
The connection failed logs can be used for integration in tools such as Fail2ban. Example of jails and filters working with systemd
/journald
are available in fail2ban directory.
Details information about account configuration properties can be found here.
SFTPGo can easily saturate a Gigabit connection on low end hardware with no special configuration, this is generally enough for most use cases.
More in-depth analysis of performance can be found here.
Some code was initially taken from Pterodactyl sftp server
GNU GPLv3
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.