Skip to main content

A simple multi-thread sftp server.

Project description

sftpd

A simple multi-thread sftp server.

Install

pip install sftpd

Usage

C:\workspace\sftpd>sftpd --help
Usage: sftpd [OPTIONS] COMMAND [ARGS]...

Options:
-c, --config FILENAME  Config file path, use yaml format.
--help                 Show this message and exit.

Commands:
reload  Reload application server.
start   Start application server.
stop    Stop application server.

##Example start

D:\sftpd>dir

D:\sftpd 

2018/05/18  20:51    <DIR>          .
2018/05/18  20:51    <DIR>          ..
2018/05/18  20:39             1,036 sftpd.yml
2018/05/18  20:06                36 users.yml
            2 files          1,072 bytes
            2 folders 289,594,834,944 bytes

e:\sftpd>sftpd start
2018-05-18 20:39:30,548 DEBUG   sftp server starting with config = {'application': {'daemon': False, 'main': 'sftpd.server.sftp_server'}, 'server': {'binding': '0.0.0.0', 'port': 2222, 'backlog': 32}, 'sftpd': {'root': 'e:/sftpd', 'keyfile': '~/.ssh/id_rsa', 'users': 'users.yml'}, 'logging': {'version': 1, 'disable_existing_loggers': False, 'formatters': {'simple': {'format': '%(asctime)-15s\t%(levelname)s\t%(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'level': 'DEBUG', 'formatter': 'simple'}, 'file': {'class': 'logging.handlers.TimedRotatingFileHandler', 'level': 'DEBUG', 'formatter': 'simple', 'filename': 'server.log', 'backupCount': 30, 'when': 'D', 'interval': 1, 'encoding': 'utf-8'}}, 'loggers': {'sftpd': {'level': 'DEBUG', 'handlers': ['file', 'console'], 'propagate': False}}, 'root': {'level': 'DEBUG', 'handlers': ['file', 'console']}}}.
2018-05-18 20:39:30,548 DEBUG   sftp server start socket listening: binding=0.0.0.0, port=2222, backlog=32.
2018-05-18 20:39:30,564 DEBUG   sftp server wating connection...

Example config

application:
    daemon: true
    pidfile: sftpd.pid

server:
    binding: 0.0.0.0
    port: 2222
    backlog: 32

sftpd:
    root: e:/sftpd
    keyfile: ~/.ssh/id_rsa
    users: users.yml

logging:
    version: 1
    disable_existing_loggers: false
    formatters:
        simple:
            format: "%(asctime)-15s\t%(levelname)s\t%(message)s"
    handlers:
        console:
            class: logging.StreamHandler
            level: DEBUG
            formatter: simple
        file:
            class: logging.handlers.TimedRotatingFileHandler
            level: DEBUG
            formatter: simple
            filename: server.log
            backupCount: 30
            when: D
            interval: 1
            encoding: utf-8
    loggers:
        sftpd:
            level: DEBUG
            handlers:
                - file
                - console
            propagate: no
    root:
        level: DEBUG
        handlers:
            - file
            - console

Note:

  1. sftpd.root defaults to os.getcwd().
  2. sftpd.keyfile defaults to ~/.ssh/id_rsa.
  3. You can use ssh-keygen to generate server key.
  4. sftpd.users defaults to users.yml, it is yaml format config file contains users and users' password.

Example users

user01:
    password: user01's-password
user02:
    password: user02's-password

Note:

  1. sftpd will always reload data from users.yml while doing authentication.

Releases

v0.1.0 2018/03/18

  • First release.

v0.1.1 2018/03/18

v0.1.2 2018/03/21

  • Update.

v0.2.0 2022/01/08

  • Fix license file missing problem.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sftpd-0.2.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

sftpd-0.2.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file sftpd-0.2.0.tar.gz.

File metadata

  • Download URL: sftpd-0.2.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for sftpd-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ab013c00ba21a6e10677a44922da2819653bc6db4ca24080b81c00bd9b539a96
MD5 b09815582e6dedbb66ee8107b36b3556
BLAKE2b-256 f7bc2ae3dce6651054a7265d745be2155c5f577e749c7944179a7ac9aa5accc0

See more details on using hashes here.

File details

Details for the file sftpd-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sftpd-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for sftpd-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d0097bf3f0e058e987a5b7b00304f802827c130540f81f67c734bd86395dea8b
MD5 66d72e499c63edde8a21b5df12c0ccd9
BLAKE2b-256 ce0f04d3260944d9959894daeec92a93ee6d5ae07794a21d8916aa529286d531

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page