好的阿杰,我帮你整理一份 安全配置 SFTP 服务器的完整指南,涵盖 Linux 环境下从安装、用户隔离到安全加固的全流程。


1️⃣ SFTP 简介

  • SFTP(SSH File Transfer Protocol)通过 SSH 隧道进行文件传输
  • 与 FTP 不同,SFTP 加密传输,安全性高
  • 适合企业内部或公网安全传输文件

注意:SFTP 不是 FTP over SSL,而是 SSH 内置的文件传输功能。


2️⃣ 安装 OpenSSH(自带 SFTP)

Linux 系统大多自带 openssh-server,如果未安装:

# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server

# CentOS/RHEL
sudo yum install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

  • 默认 SFTP 功能已包含在 SSH 中
  • 配置文件:/etc/ssh/sshd_config

3️⃣ 创建 SFTP 用户并隔离目录

步骤一:创建 SFTP 用户组

sudo groupadd sftpusers

步骤二:创建用户并指定家目录

sudo useradd -m -g sftpusers -s /sbin/nologin sftpuser
sudo passwd sftpuser

  • -s /sbin/nologin 防止用户登录 Shell
  • 家目录 /home/sftpuser 用于上传文件

步骤三:设置目录权限

SFTP chroot 目录要求:

  • 根目录必须属于 root 且不可写
  • 上传目录可写
sudo mkdir -p /home/sftpuser/upload
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload


4️⃣ 配置 SSHD 只允许 SFTP

编辑 /etc/ssh/sshd_config,在文件末尾添加:

# SFTP 相关配置
Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

  • ChrootDirectory /home/%u → 将用户限制到家目录
  • ForceCommand internal-sftp → 禁止 Shell 登录
  • 禁用端口转发与 X11,提高安全性

检查语法并重启 SSHD:

sudo sshd -t
sudo systemctl restart sshd


5️⃣ 安全加固

  1. 禁用密码登录,使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes

  • 用户生成 SSH Key:
ssh-keygen -t ed25519

  • 上传公钥到服务器:
mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
echo "公钥内容" > /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpusers /home/sftpuser/.ssh

  1. 限制 SSH 端口
Port 2222

  1. 限制登录用户
AllowUsers sftpuser

  1. 启用防火墙
  • 仅开放 SSH 端口(22 或自定义)
ufw allow 2222/tcp
ufw enable

  1. 限制上传文件大小(可选)
  • 在 SFTP 客户端设置
  • 或使用 ulimit 限制用户资源

6️⃣ 测试 SFTP 访问

sftp -P 2222 sftpuser@your_server_ip

  • 用户只能访问 /home/sftpuser/upload
  • 无法访问系统其他目录
  • 文件传输全程加密

7️⃣ 维护与监控

  1. 查看用户登录
lastlog -u sftpuser

  1. 查看上传文件
ls -lh /home/sftpuser/upload

  1. 开启日志审计
# /etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO

  • 日志默认在 /var/log/auth.log 或 /var/log/secure

8️⃣ 总结

安全 SFTP 配置关键点:

步骤作用
用户隔离(chroot)防止访问系统其他目录
禁用 Shell 登录限制攻击面
密钥认证避免弱口令攻击
防火墙 & 端口限制防止暴力扫描
日志审计监控用户操作,快速排查问题

阿杰,如果你愿意,我可以帮你画一张 安全 SFTP 架构图,包括 用户隔离目录、密钥认证、日志审计、防火墙限制,一眼就能看懂整体安全配置流程。

你希望我画吗?