/exsftpd

Elixir SFTP daemon with customisable user directories

Primary LanguageElixirApache License 2.0Apache-2.0

Exsftpd

Build Status

SFTP server which do not allow shell access and has a separate root directory for each user.

Installation

The package can be installed by adding exsftpd to your list of dependencies in mix.exs:

def deps do
  [
    {:exsftpd, "~> 0.10.1"}
  ]
end

Next add a configuration entry for :exsftpd, Exsftpd.Server:

config :exsftpd, Exsftpd.Server,
  port: 2220,
  #root dir for <someuser>: /tmp/users/files/<someuser>
  user_root_dir: "/tmp/users/files",
  #look for authorized_keys at /tmp/users/<username>/.ssh
  user_auth_dir: "/tmp/users",
  #Where to look for ssh host keys
  system_dir: "/tmp/ssh",
  event_handler: fn(event) -> IO.puts("Event: #{inspect event} ") end
  # If you need to support legacy encryption algorithms
  modify_algorithms: [
    prepend: [kex: [:"diffie-hellman-group1-sha1", :"diffie-hellman-group-exchange-sha1"]],
    prepend: [public_key: [:"ssh-rsa", :"ssh-dss"]]
  ]

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/exsftpd.