SFTP 配置教程,适用于 Armbian/Debian 系统,实现以下目标:

  • 创建用户名为 blog 的 SFTP 用户;

  • 密码设为 awang

  • 限制该用户只能使用 SFTP,不能登录 shell;

  • 共享目录为 /opt/sftp,并确保权限正确。


🛠️ 1. 创建用户和目录

# 创建共享目录
sudo mkdir -p /opt/sftp/blog       # 为 blog 用户创建子目录

# 添加 blog 用户(无 shell 权限,不能登录系统)
sudo useradd -m -d /opt/sftp/blog -s /usr/sbin/nologin blog

# 设置密码为 awang
echo "blog:awang" | sudo chpasswd

# 修改目录权限
sudo chown root:root /opt/sftp
sudo chmod 755 /opt/sftp

sudo chown blog:blog /opt/sftp/blog

⚙️ 2. 修改 SSH 配置启用独立 SFTP 权限

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

添加或修改以下内容(建议放在文件末尾):

Subsystem sftp internal-sftp

# 限制 blog 用户只用 SFTP,不允许 shell 登录
Match User blog
    ChrootDirectory /opt/sftp
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

确保以下配置存在(否则 SFTP 无法正常使用):

Subsystem sftp internal-sftp

🔁 3. 重启 SSH 服务

sudo systemctl restart ssh

✅ 4. 测试登录

使用以下命令测试 SFTP 是否正常:

sftp blog@localhost

输入密码 awang 后应自动进入 /,实际就是 /opt/sftp 被 chroot 了。用户拥有 /blog 的写权限。


📁 目录结构与权限复查

# 确保权限正确(Chroot 的目录必须由 root 拥有)
ls -ld /opt/sftp           # root:root 755
ls -ld /opt/sftp/blog      # blog:blog 700 或 755