温馨提示×

ubuntu sftp怎样启用

小樊
44
2026-09-23 13:56:32
栏目: 智能运维

在 Ubuntu 上启用 SFTP(基于 SSH 的文件传输)通常很简单,因为 SFTP 是 OpenSSH 的一部分,只要 SSH 服务可用,SFTP 一般就可以直接使用。

下面按常见场景说明:


一、最常用方式(系统用户 SFTP)

1. 安装 OpenSSH Server

sudo apt update
sudo apt install openssh-server

2. 启动并设置开机自启

sudo systemctl enable ssh
sudo systemctl start ssh

3. 验证 SFTP 是否可用

从另一台机器测试:

sftp username@服务器IP

如果能登录,说明 SFTP 已启用 ✅

默认情况下,只要能 SSH 登录,就能 SFTP


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

适合给文件上传用户使用。

1. 创建用户

sudo adduser sftpuser

2. 修改 SSH 配置

编辑:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

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

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

4. 重启 SSH

sudo systemctl restart ssh

三、多用户 SFTP(分组管理)

1. 创建 SFTP 用户组

sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

2. sshd_config 中使用组匹配

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

创建目录:

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

四、防火墙注意

如果启用了 UFW:

sudo ufw allow ssh

五、常见问题

SFTP 连不上?

  • 确认 SSH 是否在运行:systemctl status ssh
  • 确认端口(默认 22)
  • 查看日志:sudo tail -f /var/log/auth.log

提示“broken pipe”

  • 通常是 ChrootDirectory 权限不对(必须是 root 拥有)

如果你有具体需求(比如:

  • 只允许上传
  • Docker 环境
  • 非 22 端口
  • 公网服务器安全配置)

可以告诉我,我可以给你更精确的配置。

0 踩