本文介绍如何在EE4服务器上设置SFTP。 我们将通过在其自己的轻量级容器中运行SFTP守护程序来完成此任务。 我们不会在站点的PHP容器中安装SFTP守护程序,因为不建议每个容器运行多个守护程序进程。
首先,我们需要在服务器上创建一个目录来存储SFTP配置和相关文件数据。
注意:本文假设您已以root用户身份登录
mkdir ~/.sftp-config
现在我们需要创建一个SSH密钥对用于我们的SFTP容器。
ssh-keygen -t ed25519 -f ~/.sftp-config/ssh_host_ed25519_key < /dev/null ssh-keygen -t rsa -b 4096 -f ~/.sftp-config/ssh_host_rsa_key < /dev/null
现在我们需要在 ~/.sftp-config/users.conf
中创建文件,并为要创建的每个SFTP用户添加用户名和密码。
foo:123:1001 bar:abc:1002:100 baz:xyz:1003:100
该文件的格式为 user:password:uid:gid
。 其中UID和GID是计算机上要分配给SFTP用户的用户和组ID 。您可以使用id命令查找特定用户的UID和GID。
id www-data
现在在 ~/.sftp-config/docker-compose.yml
创建一个文件,内容如下:
sftp: image: atmoz/sftp restart: on-failure volumes: - /opt/easyengine/sites/example.com/app/htdocs/:/home/<sftp-user>/upload - ./ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key - ./ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key - ./users.conf:/etc/sftp/users.conf:ro ports: - "2222:22"
You might need to repeat the first line in volumes:
for each user defined in user.conf
现在启动容器:
cd ~/.sftp-config/ && docker-compose up -d
更新 users.conf
如果要添加/更新/删除用户,请在 users.conf
文件中进行更改后,运行以下命令以确保更新更新:
cd ~/.sftp-config/ && docker-compose down && docker-compose up -d
使用加密密码
如果查看我们的users.conf
文件,则所有密码均未加密。为了提高安全性,您甚至可以使用加密密码。要生成加密的密码,请使用以下命令:
echo -n "your-password" | docker run -i --rm atmoz/makepasswd --crypt-md5 --clearfrom=- | awk '{print $2":e"}'
在user.conf
中为每个用户使用以上命令。并用加密密码替换明文密码。 现在 user.conf
看起来像:
foo:$1$oc7STwA.$CyNcLjDQ0Oh8nLznURifv.:e:1001:100 bar:$1$ezqvUJEE$4c2r1HvoTMJ.Aw2tPp1Nw1:e:1002:100 baz:$1$bcRtbHbO$l0155yF6.lvaJxog3hS9D.:e:1003:100
更新文件后,按照此处所述重新启动SFTP容器。