{"id":21976997,"url":"https://github.com/stuartapp/sftp-to-s3","last_synced_at":"2026-04-02T01:03:05.800Z","repository":{"id":86222293,"uuid":"288653167","full_name":"StuartApp/sftp-to-s3","owner":"StuartApp","description":"SFTP server with S3 backend","archived":false,"fork":false,"pushed_at":"2022-09-05T13:29:52.000Z","size":15,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":47,"default_branch":"master","last_synced_at":"2026-01-03T16:24:39.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StuartApp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-19T06:33:48.000Z","updated_at":"2022-06-01T11:05:58.000Z","dependencies_parsed_at":"2023-03-08T00:45:09.962Z","dependency_job_id":null,"html_url":"https://github.com/StuartApp/sftp-to-s3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StuartApp/sftp-to-s3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StuartApp%2Fsftp-to-s3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StuartApp%2Fsftp-to-s3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StuartApp%2Fsftp-to-s3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StuartApp%2Fsftp-to-s3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StuartApp","download_url":"https://codeload.github.com/StuartApp/sftp-to-s3/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StuartApp%2Fsftp-to-s3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T16:12:56.624Z","updated_at":"2026-04-02T01:03:05.291Z","avatar_url":"https://github.com/StuartApp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SFTP to AWS S3\nSFTP server with S3 support as backend. As simple as that\n\n## Getting started\nYou may want to check the existing docker image for this software from DockerHub.\n\n### Usage\n```\n./run.py -c \u003cconfig_file.yml\u003e [--host='0.0.0.0'] [-p 21] [-l INFO] [-b mybucket] [-k ssh_private_key_file]\n```\n\n### Creating the config file\nJust create a YAML file with the following structure:\n```yaml\nbucket: 'mybucket'\nkeys:\n  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDt2m6agh6+IniAGXATi4LGb30zUDhWdROCTIk77KDYHLqLf5Cht3WtcK6aMjad9GHPshjs7DA0TlN0tWzA4D9C9RhKOY+VXvVhLU/g0L/DFgAM3uQ18CIpedoI+CGtsrHFD5GmZmggaMQtCBkOHhTGqTu6tpyjs6DnZ/vp6YWYpPMlPGMcwxKeFW43XkJKFcG12ChpQFi9/blM26yxCmC64oCJwyhJ+L3OST6gBdjnfdguwMthBFZPaQKzWFd0hEwjlH91KV+EhBMzBhDuoSvDoYnszkixnPOcpo3cIBIcxp6OWSqo1iU4orH8PVUaRe+XNBp7hW6GqzrmpLkVRPb+fL62j8/8Oa8OLVH+iYug7bpGNZPJKS3O76T/UB3K7HpGkue8nyHEi5s5gBcVUOUorJDB8GpnN+2LTAmMnRAmivRSC74ZT+hI2IgkscQoNMgm8eDnsupGhC4l6/tJP82/hEdDY0hpY8FZI9ME8PJ2IKSu/gpzbsRptZVGbVG4+aM= # Sample key 1\n  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDt2m6agh6+IniAGXATi4LGb30zUDhWdROCTIk77KDYHLqLf5Cht3WtcK6aMjad9GHPshjs7DA0TlN0tWzA4D9C9RhKOY+VXvVhLU/g0L/DFgAM3uQ18CIpedoI+CGtsrHFD5GmZmggaMQtCBkOHhTGqTu6tpyjs6DnZ/vp6YWYpPMlPGMcwxKeFW43XkJKFcG12ChpQFi9/blM26yxCmC64oCJwyhJ+L3OST6gBdjnfdguwMthBFZPaQKzWFd0hEwjlH91KV+EhBMzBhDuoSvDoYnszkixnPOcpo3cIBIcxp6OWSqo1iU4orH8PVUaRe+XNBp7hW6GqzrmpLkVRPb+fL62j8/8Oa8OLVH+iYug7bpGNZPJKS3O76T/UB3K7HpGkue8nyHEi5s5gBcVUOUorJDB8GpnN+2LTAmMnRAmivRSC74ZT+hI2IgkscQoNMgm8eDnsupGhC4l6/tJP82/hEdDY0hpY8FZI9ME8PJ2IKSu/gpzbsRptZVGbVG4+aM= # Sample key 2\nprivate_key: |\n  -----BEGIN RSA PRIVATE KEY-----\n  MIIEogIBAAKCAQEAvq0vfXTkphx7T+0qXNjcr8uE6qBUjdcXECucRdEEIi5R4xp2\n  dr2BRhi3GrJK3wV9FkkeNOl0r+z5FAYIzF5lt4zmPN/NlhwAt7RZahnWMc7T2cmb\n  sXNMYvmgpRVrG0wFvUoI+Y1l+9rjjwAzuKFtV7xy4p92bY+ARI+d1CQ80pZkwVtu\n  95upGjOMCtXUA8/d3C1sscM4JjANKVlrcDSgb7T8NojYiBex8z7a7NoMn9cab+tp\n  lSIbIt41NpQhbIxJCtLtKAU00mObnUnf5mSgOkL7MOMUnhX1n/2VpIZG6U7B1yT8\n  TEApigq0MkfQLJkoMoJqN3mdpQwqwD3Db5s5ZQIDAQABAoIBADG77nUktjb1mtxg\n  GfqZvgZEaWjhZOySO7vGBD7Zo+BegJFh56BVEZD9BVV7R7ggMF5NuAlJE1yHzPgC\n  Eu1redCEedFK9s6+gxlneyMHlizrq6pUwb1pO3Vdcx9cFNHL5HtZAjpFPWKR12UH\n  QnZX9LM7viOKQFOXaHd5lkstIIg0qmXC7Z7FkAgPIvO18yASlCYwISPBgQpdEVu8\n  P2R+9Z7lHu8skqLC8KFfMwiZ3P/bTZeloCabpAOeeLoExR/7tMZxGL8QdS2HuAeF\n  nyJ39T911Te6nl67T4UDh+Q/YE2mvCs7ecQL1Eih6FvRcN8l7/kcqmwS1exN3UET\n  za7P5okCgYEA8Qjl5rsnpmvXE98Ajqj0VvMEL5oMrsGyDg+W/757pCTxSuuvDlPB\n  Ombbk3+UgmwUo9uOezmzmrnuXq7rmrtOcM+ji68De9WN7ne5v4Vk9wbzS3Y8fH/B\n  MOuEcdALb6jcrs36deks/rJZpWyANEbiDiIDlQ9uZWIuUwGpu5/0OwMCgYEAyoPf\n  mgCPtD4NtdwWWBrDveQnqUf0w9xjdpE2zCDt4QmykALiJjof9qFTqv2Jgco0Qlvi\n  nCpQPaDCmvKvN+CVUruXYuhwsPXuqbavkPecbyHVQyjYwytVyHGxxARLVCLluMpz\n  rsypbob30ctaksDNXoyMFBMWqVfOZOTuUxJFmXcCgYB06Uf5/lVhF3WfIc93YuQB\n  OKaTIDl+mlzvDQjEy3PVTkXrfR3P6TgUR8fBZ2R1Tk9Emz4k7vv61KyWKGoHB0so\n  1M4S9rTN3+uT+2aRSvaKC0j/FT6JdL4UKGh5e9vQMSu5bhdKEevNLlzlLBeTQ75p\n  9H2gU3fMnS6y/F+DrjYcWQKBgC3oBt/aELlC98ipw0blikmZVoRBE3LymnleIZXU\n  QRgqIpgSj0ErG+PEXjr8jhclxwLj4VKVJOtTbcnCCYYZGsBOVdrN5f23QgqmptWt\n  y4BFoxo+QCS9xgxR+YH9lzXTU0+4VNDjA+VSIwsjlbx+iA9OvNIwIYrxpI+qdXvP\n  QIexAoGAfo4OMInOxCRaTnYOlNWCRwzkxjvZRIHXwAQ2ek0c6nqd7jAu30MsuEGq\n  boKuTDIH1O3vfNZf0DEq3yg5Aj7Bu4DtszNoJAIlR7RKer+mckDzgvyBD2gyuT5q\n  NHxSh107PvDlBsiL2aI185DAU8O4wq4fLJD9WexTQksK6Z3Ac+I=\n  -----END RSA PRIVATE KEY-----\nlisten_addr: '0.0.0.0'\nlisten_port: 3373\n```\n\n### Docker image\nRunning this image is as simple as\n```\ndocker run -v ${PWD}/sample_config.yml:/config.yml sftp2s3 -c /config.yml\n```\n\n## Configuration\nThe configuration order is, from less to more:\n- Defaults\n- Environment variables\n- Configuration file\n- Command line arguments\n\nIt is mandatory to have a configuration file \n\n### Defaults\nThe default values are\n- listen_addr: `localhost`\n- listen_port: `3373`\n- bucket: `None`\n- private_key: `None`\n- public_keys: `None`\n\n### Environment variables\n- `CONFIG_FILE`: Path of the configuration file\n- `SSH_PUBLIC_KEY`: Single SSH public key allowed\n- `S3_BUCKET`: Name of the linked S3 bucket\n- `LISTEN_ADDR`: Listen address\n- `LISTEN_PORT`: Listen port\n\n### Configuration file\nYou can create a YAML file for storing the application settings using the following keys:\n- `log_level`: Log level.\n- `keys`: List of public keys allowed to use this service.\n- `private_key`: Content of the SSH private key used by the server.\n- `bucket`: Name of the linked S3 bucket.\n- `listen_addr`: Listen address.\n- `listen_port`: Listen port.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuartapp%2Fsftp-to-s3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuartapp%2Fsftp-to-s3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuartapp%2Fsftp-to-s3/lists"}