温馨提示×

ubuntu sftp怎么配置

小樊
42
2026-09-05 09:27:02
栏目: 智能运维

在 Ubuntu 上配置 SFTP(基于 SSH 的文件传输)通常有以下几种常见方式。下面从最常用、最安全的方式讲起。


一、使用系统用户 + SSH(默认 SFTP,推荐)

Ubuntu 默认已支持 SFTP(通过 OpenSSH)。

1. 安装 SSH 服务

sudo apt update
sudo apt install openssh-server

2. 创建 SFTP 用户

sudo adduser sftpuser

3. 测试 SFTP

sftp sftpuser@服务器IP

✅ 默认即可使用(家目录可读写)


二、限制 SFTP 用户只能使用 SFTP(不能登录 Shell)

1. 修改 SSH 配置

sudo nano /etc/ssh/sshd_config

确保有以下内容(或修改):

Subsystem sftp internal-sftp

在文件末尾添加:

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

2. 设置目录权限(非常重要)

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

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

3. 重启 SSH

sudo systemctl restart ssh

✅ 用户只能 SFTP,不能 SSH 登录


三、多用户 SFTP(统一目录)

1. 创建组

sudo groupadd sftpusers

2. sshd_config

Match Group sftpusers
    ChrootDirectory /sftp
    ForceCommand internal-sftp
    AllowTcpForwarding no

3. 目录结构

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

sudo mkdir /sftp/user1
sudo chown user1:sftpusers /sftp/user1

四、使用密钥登录(更安全)

1. 生成密钥

ssh-keygen

2. 上传公钥

ssh-copy-id sftpuser@服务器IP

3. 禁用密码登录(可选)

PasswordAuthentication no

五、防火墙(如有)

sudo ufw allow 22

六、常见问题

❌ 登录后提示 broken pipe

  • Chroot 目录必须是 root 拥有
  • 权限不能大于 755

❌ 无法上传文件

  • 上传目录必须属于该用户

如果你需要:

  • Docker SFTP
  • vsftpd(FTP 而非 SFTP)
  • 图形化管理

可以告诉我你的使用场景,我可以给你更精确的配置。

0