温馨提示×

debian怎么搭建sftp服务器

小樊
45
2026-10-03 15:46:52
栏目: 云计算

在 Debian 上搭建 SFTP 服务器(基于 OpenSSH,最常用、最安全)一般步骤如下。下面以 Debian 11 / 12 为例,适用于只允许 SFTP、禁止 SSH 登录的场景。


一、安装 OpenSSH(通常已安装)

sudo apt update
sudo apt install openssh-server

确认服务运行:

sudo systemctl status ssh

二、创建 SFTP 用户和目录

1. 创建用户(不允许登录 shell)

sudo adduser sftpuser

或指定 nologin:

sudo useradd -m -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

2. 创建 SFTP 根目录(重要)

⚠️ SFTP 根目录必须归 root 所有,且权限不能大于 755

sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

3. 创建可写目录

sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload

三、配置 SSH(关键)

编辑配置文件:

sudo nano /etc/ssh/sshd_config

1. 注释或确认这一行存在

Subsystem sftp internal-sftp

2. 在文件末尾添加

Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

如果有多个用户,可用组:

Match Group sftp
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp

四、重启 SSH

sudo systemctl restart ssh

五、测试 SFTP

从本地或远程:

sftp sftpuser@服务器IP

示例:

sftp sftpuser@192.168.1.100

登录后:

cd upload
put test.txt

六、常见问题

❌ 登录失败:bad ownership or modes

原因:Chroot 目录不是 root 所有或权限 > 755

✅ 解决:

sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

❌ 能登录但不能上传

✅ 上传目录需用户可写:

chown sftpuser:sftpuser /sftp/sftpuser/upload

七、(可选)使用密钥登录

ssh-keygen
ssh-copy-id sftpuser@ip

并在 sshd_config 中:

PasswordAuthentication no

如果你需要:

  • 多用户 SFTP
  • 只读 / 只写
  • Docker 方案
  • vsftpd(FTP 非 SFTP)

可以告诉我,我可以给你更具体的配置。

0 踩