mirror of
https://github.com/atmoz/sftp.git
synced 2024-11-24 12:59:24 -05:00
91 lines
2.3 KiB
Markdown
91 lines
2.3 KiB
Markdown
atmoz/sftp
|
||
==========
|
||
|
||
Easy to use SFTP ([SSH File Transfer Protocol](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)) server with [OpenSSH](https://en.wikipedia.org/wiki/OpenSSH). This is an automated build linked with the [debian](https://hub.docker.com/_/debian/) repository.
|
||
|
||
Usage
|
||
-----
|
||
|
||
- Define users as command arguments, STDIN or mounted in /etc/sftp-users.conf
|
||
(syntax: `user:pass[:e][:uid[:gid]]...`).
|
||
- You must set custom UID for your users if you want them to make changes to
|
||
your mounted volumes with permissions matching your host filesystem.
|
||
- Mount volumes in user's home folder.
|
||
- The users are chrooted to their home directory, so you must mount the
|
||
volumes in separate directories inside the user's home directory
|
||
(/home/user/**mounted-directory**).
|
||
|
||
Examples
|
||
--------
|
||
|
||
### Simple example
|
||
|
||
```
|
||
docker run \
|
||
-v /host/share:/home/foo/share \
|
||
-p 2222:22 -d atmoz/sftp \
|
||
foo:123:1001
|
||
```
|
||
|
||
#### Using Docker Compose:
|
||
|
||
```
|
||
sftp:
|
||
image: atmoz/sftp
|
||
volumes:
|
||
- /host/share:/home/foo/share
|
||
ports:
|
||
- "2222:22"
|
||
command: foo:123:1001
|
||
```
|
||
|
||
#### Logging in
|
||
|
||
The OpenSSH server runs by default on port 22, and in this example, we are
|
||
forwarding the container's port 22 to the host's port 2222. To log in with an
|
||
OpenSSH client, run: `sftp -P 2222 foo@<host-ip>`
|
||
|
||
### Store users in config
|
||
|
||
```
|
||
$ cat /host/users.conf
|
||
foo:123:1001
|
||
bar:abc:1002
|
||
```
|
||
|
||
```
|
||
docker run \
|
||
-v /host/users.conf:/etc/sftp-users.conf:ro \
|
||
-v /host/share:/home/foo/share \
|
||
-v /host/documents:/home/foo/documents \
|
||
-v /host/http:/home/bar/http \
|
||
-p 2222:22 -d atmoz/sftp
|
||
```
|
||
|
||
### Encrypted password
|
||
|
||
Add `:e` behind password to mark it as encrypted. Use single quotes.
|
||
|
||
```
|
||
docker run \
|
||
-v /host/share:/home/foo/share \
|
||
-p 2222:22 -d atmoz/sftp \
|
||
'foo:$1$0G2g0GSt$ewU0t6GXG15.0hWoOX8X9.:e:1001'
|
||
```
|
||
|
||
Tip: you can use makepasswd to generate encrypted passwords:
|
||
`echo -n "password" | makepasswd --crypt-md5 --clearfrom -`
|
||
|
||
### Using SSH key (without password)
|
||
|
||
Mount all public keys in the user's `.ssh/keys/` folder. All keys are automatically
|
||
appended to `.ssh/authorized_keys`.
|
||
|
||
```
|
||
docker run \
|
||
-v /host/id_rsa.pub:/home/foo/.ssh/keys/id_rsa.pub:ro \
|
||
-v /host/id_other.pub:/home/foo/.ssh/keys/id_other.pub:ro \
|
||
-v /host/share:/home/foo/share \
|
||
-p 2222:22 -d atmoz/sftp \
|
||
foo::1001
|
||
```
|