SFTP server which do not allow shell access and has a separate root directory for each user.
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.