使用docker部署FTP服务
1.拉取镜像
docker pull fauria/vsftpd
2.启动后容器:
docker run -d -v /var/ftp:/home/vsftpd \
-p 2020:20 -p 2121:21 -p 21100-21110:21100-21110 \
-e FTP_USER=test -e FTP_PASS=demo@test12345 \
-e PASV_ADDRESS=你的服务器ip \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name xxx_vsftpd --restart=always fauria/vsftpd
/var/ftp是你服务器中的路径
/home/vsftpd是docker容器中的路径
-p:映射 docker 端口(冒号前面是宿主机的端口)
-e FTP_USER=test -e FTP_PASS=test :设置默认的用户名密码(都为 test) PASV_ADDRESS:宿主机 ip,当需要使用被动模式时必须设置。 PASV_MIN_PORT~
PASV_MAX_PORT:给客服端提供下载服务随机端口号范围,默认 21100-21110,与前面的 docker 端口映射设置成一样。
3.配置多个用户:
进入docker容器里面
docker exec -it 容器id bash
cat /etc/vsftpd/virtual_users.txt
vi /etc/vsftpd/virtual_users.txt
加入新的用户名密码:test2 test2@demo123
创建用户目录:mkdir /var/ftp/test2
生存二进制文件:db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
重启ftp:docker restart 容器id
4.连接
ftp IP 端口
使用docker部署SFTP服务
步骤一:拉取SFTP Docker镜像
docker pull atmoz/sftp
步骤二:创建SFTP容器
docker run -d -v /path/to/sftp:/home/sftp -p 2222:22 --name sftp --restart=always atmoz/sftp user:pass:::upload
这个命令中的关键参数说明如下:
-d:以后台模式运行容器
-v /path/to/sftp:/home/sftp:将主机上的/path/to/sftp目录挂载到容器内的/home/sftp目录,用于存储SFTP用户的文件
-p 2222:22:将主机的2222端口映射到容器内的22端口,用于SFTP连接
–name sftp:将容器命名为sftp
–restart=always:设置容器自动重启
atmoz/sftp:使用atmoz/sftp镜像
user:pass:::upload:创建一个用户名为user、密码为pass的SFTP用户,该用户具有上传文件的权限
请将/path/to/sftp替换为你希望的存储路径,user和pass替换为你希望的用户名和密码。
步骤三:配置SFTP用户
现在我们需要配置SFTP用户的权限和目录。进入容器的bash终端,执行以下命令:
docker exec -it sftp bash
然后,在容器的bash终端中执行以下命令:
usermod -d /home/sftp/upload user
chown root:root /home/sftp
chmod 755 /home/sftp
chown user /home/sftp/upload
这些命令的作用如下:
usermod -d /home/sftp/upload user:将SFTP用户的默认目录更改为/home/sftp/upload
chown root:root /home/sftp:将SFTP用户的根目录的所有权更改为root用户
chmod 755 /home/sftp:设置SFTP用户的根目录权限为755,这样其他用户只能读取或执行根目录
chown user /home/sftp/upload:将/home/sftp/upload目录的所有权更改为SFTP用户
请将user替换为之前创建的SFTP用户名。
步骤四:测试SFTP连接
sftp -P 端口号 用户名@IP地址