You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DDEV的website容器中创建SFTP用户以实现api容器访问?

在DDEV的website容器中创建SFTP用户并实现跨容器访问

可行性说明

可以在DDEV的website容器中创建SFTP用户,因为DDEV容器基于Debian/Ubuntu镜像,支持安装和配置SFTP服务,且两个容器通过路由器连接,可通过容器名或内部IP互相访问。

具体操作步骤

1. 进入website容器

使用DDEV命令进入目标容器:

ddev exec -s web --container-name=ddev-website-web bash

2. 安装SFTP服务依赖

在容器内安装openssh-server:

apt update && apt install -y openssh-server

3. 创建SFTP专用用户和目录

  • 创建用户(示例用户名为sftp_user),指定其登录shell为/usr/sbin/nologin(禁止SSH登录,仅允许SFTP):
useradd -m -d /var/www/html -s /usr/sbin/nologin sftp_user
  • 设置用户密码:
passwd sftp_user

(输入两次密码完成设置即可)

4. 配置SSH服务以支持SFTP

编辑/etc/ssh/sshd_config文件,替换原有SFTP配置并添加专用规则:

sed -i 's/Subsystem sftp/#Subsystem sftp/g' /etc/ssh/sshd_config
echo -e "\nSubsystem sftp internal-sftp\nMatch User sftp_user\n    ForceCommand internal-sftp\n    PasswordAuthentication yes\n    ChrootDirectory /var/www/html\n    PermitTunnel no\n    AllowAgentForwarding no\n    AllowTcpForwarding no\n    X11Forwarding no" >> /etc/ssh/sshd_config

5. 调整目录权限(关键)

SFTP的Chroot目录需满足特定权限要求:

chown root:root /var/www/html
chmod 755 /var/www/html

如果需要让用户能写入特定子目录(比如files),可创建并调整权限:

mkdir -p /var/www/html/files
chown sftp_user:sftp_user /var/www/html/files
chmod 775 /var/www/html/files

6. 重启SSH服务

service ssh restart

7. 从api容器测试SFTP连接

进入api容器:

ddev exec -s web --container-name=ddev-api-web bash

安装SFTP客户端(若容器未预装):

apt update && apt install -y ftp

连接website容器(容器名ddev-website-web,端口22):

sftp sftp_user@ddev-website-web

输入之前设置的密码即可登录,之后可执行文件传输操作。

注意事项

  • DDEV容器重启后,安装的openssh-server和创建的用户会丢失,若需持久化配置,可通过DDEV的docker-compose.*.yaml自定义配置,或使用DDEV的hooks机制在容器启动时自动执行安装和配置命令。
  • 确保两个容器处于同一DDEV项目网络中,默认DDEV为每个项目创建独立网络,若需跨项目互通,可通过ddev config global --router-compose-path配置共享网络,或手动将容器加入同一网络。

内容的提问来源于stack exchange,提问作者ara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:35:22