首页主机资讯Debian SFTP虚拟用户如何设置

Debian SFTP虚拟用户如何设置

时间2025-11-28 09:04:04发布访客分类主机资讯浏览221
导读:Debian SFTP虚拟用户设置指南 一 方案选择 使用 OpenSSH 内置 SFTP(internal-sftp)+ PAM + 系统用户映射:不依赖 FTP 服务,安全性高,配置简单,适合大多数场景。 使用 vsftpd 的虚拟用...

Debian SFTP虚拟用户设置指南

一 方案选择

  • 使用 OpenSSH 内置 SFTP(internal-sftp)+ PAM + 系统用户映射:不依赖 FTP 服务,安全性高,配置简单,适合大多数场景。
  • 使用 vsftpd 的虚拟用户:通过 PAM 的 pam_userdb 使用数据库文件或外部数据库进行认证,适合已有 vsftpd 体系或需要 FTP/SFTP 统一管理的场景。

二 方案一 OpenSSH internal-sftp 与 PAM 映射(推荐)

  • 安装与备份
    • 安装软件包:sudo apt update & & sudo apt install -y openssh-server libpam-pwquality
    • 备份配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • 创建系统用户与目录(每个虚拟用户对应一个系统账号)
    • 示例:sudo adduser --system --group --home /srv/sftp/virtual1 --shell /usr/sbin/nologin vuser1
    • 创建可写目录:sudo mkdir -p /srv/sftp/virtual1/upload & & sudo chown vuser1:sftpusers /srv/sftp/virtual1/upload & & sudo chmod 755 /srv/sftp/virtual1/upload
  • 配置 SSH
    • 启用 internal-sftp 并限制 SFTP 仅可用:
      • Subsystem sftp internal-sftp
      • Match Group sftpusers
        • ChrootDirectory /srv/sftp/%u
        • ForceCommand internal-sftp
        • AllowTcpForwarding no
        • X11Forwarding no
    • 说明:Chroot 目录及其上级目录必须归 root 所有,否则会话会失败。
  • 配置 PAM 与密码
    • 启用 PAM:在 /etc/ssh/sshd_config 确保 UsePAM yes
    • 设置密码策略(可选):/etc/security/pwquality.conf 中设置 minlen、dcredit、ucredit 等
    • 设置用户密码:echo “vuser1:YourStrongPass” | sudo chpasswd
  • 权限与所有权
    • 锁定根目录:sudo chown root:sftpusers /srv/sftp/virtual1 & & sudo chmod 755 /srv/sftp/virtual1
    • 可写目录:sudo chown vuser1:sftpusers /srv/sftp/virtual1/upload & & sudo chmod 755 /srv/sftp/virtual1/upload
  • 重启与测试
    • 重启服务:sudo systemctl restart ssh
    • 连接测试:sftp vuser1@your_server_ip
  • 可选 公钥登录
    • 在 /srv/sftp/virtual1/.ssh/authorized_keys 放置公钥,权限:.ssh 700,authorized_keys 600
    • 确保目录属主为 vuser1,且父目录 /srv/sftp/virtual1 为 root 所有以满足 chroot 要求

三 方案二 vsftpd 虚拟用户(PAM + Berkeley DB)

  • 安装与准备
    • 安装:sudo apt update & & sudo apt install -y vsftpd libpam-pwquality db-util
    • 创建用户与目录:sudo groupadd vsftpd;sudo useradd -g vsftpd -d /var/run/vsftpd -s /usr/sbin/nologin vsftpd
  • 创建虚拟用户数据库
    • 编辑 /etc/vsftpd/virtual_users.txt(两行一组:用户名、密码)
      • user1
      • Passw0rd!
      • user2
      • Str0ngPass!
    • 生成数据库:sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
    • 权限:sudo chmod 600 /etc/vsftpd/virtual_users.*
  • 配置 PAM
    • /etc/pam.d/vsftpd 中启用:
      • auth required pam_userdb.so db=/etc/vsftpd/virtual_users
      • account required pam_userdb.so db=/etc/vsftpd/virtual_users
  • 配置 vsftpd
    • /etc/vsftpd.conf 关键项:
      • anonymous_enable=NO
      • local_enable=YES
      • write_enable=YES
      • chroot_local_user=YES
      • allow_writeable_chroot=YES
      • pam_service_name=vsftpd
      • user_sub_token=$USER
      • local_root=/srv/ftp/$USER
      • pasv_enable=YES
      • pasv_min_port=10090
      • pasv_max_port=10100
  • 创建用户目录与权限
    • 示例:sudo mkdir -p /srv/ftp/user1 /srv/ftp/user2
    • 目录属主:sudo chown vsftpd:vsftpd /srv/ftp/user1 /srv/ftp/user2
  • 防火墙与端口
    • 放行 21/TCP(控制)与 10090–10100/TCP(被动模式数据)
    • 重启服务:sudo systemctl restart vsftpd
  • 测试
    • 使用 FTP 客户端连接(SFTP 不适用 vsftpd):ftp your_server_ip

四 常见问题与排查

  • chroot 失败:Chroot 目录及其上级目录必须归 root,且不可对登录用户可写;如需上传,请在 chroot 内创建可写子目录并调整属主。
  • 登录被拒绝:检查 /var/log/auth.log(SSH)或 /var/log/vsftpd.log(vsftpd),确认 PAM 模块、用户映射与目录权限是否正确。
  • SELinux/AppArmor:若启用,需为 SFTP/Chroot 设置相应策略放行。
  • 被动模式问题:vsftpd 需开放被动端口范围,并在防火墙/NAT 中做端口映射。
  • 密钥登录失败:确认 .ssh 目录与 authorized_keys 权限与属主正确,且父目录为 root 所有以满足 chroot。

五 安全建议

  • 禁用 root 登录与密码登录(如可行),优先使用 SSH 密钥;为 SFTP 用户设置强密码策略。
  • 仅开放必要端口,限制 SFTP 用户的权限(禁用 TCP 转发X11 转发),并定期更新系统与软件包。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian SFTP虚拟用户如何设置
本文地址: https://pptw.com/jishu/758709.html
怎样监控Debian SFTP活动 Debian SFTP端口转发怎么设置

游客 回复需填写必要信息