温馨提示×

Linux SFTP如何开启服务

小樊
41
2026-08-15 19:29:28
栏目: 智能运维

在 Linux 上开启 SFTP 服务,通常是通过 OpenSSH 来实现的(SFTP 是 SSH 的一部分)。下面按常见场景给你一个完整说明。


一、确认是否已安装 OpenSSH(最常见方式)

1️⃣ 检查是否已安装

ssh -V

dpkg -l | grep openssh   # Debian/Ubuntu
rpm -qa | grep openssh   # CentOS/RHEL

2️⃣ 安装 OpenSSH(如未安装)

Ubuntu / Debian

sudo apt update
sudo apt install openssh-server

CentOS / Rocky / Alma

sudo yum install openssh-server
# 或
sudo dnf install openssh-server

二、启动并开启 SFTP 服务

SFTP 不需要单独开启,只要 SSH 服务启动即可

1️⃣ 启动 SSH 服务

sudo systemctl start sshd

2️⃣ 设置开机自启

sudo systemctl enable sshd

3️⃣ 检查状态

sudo systemctl status sshd

看到 active (running) 即表示 SFTP 已可用。


三、确认 SFTP 配置(通常无需修改)

SFTP 默认由 sshd_config 提供:

sudo vim /etc/ssh/sshd_config

确认存在以下内容(一般默认就有):

Subsystem sftp /usr/lib/openssh/sftp-server

或(较新系统):

Subsystem sftp internal-sftp

修改后重启 SSH:

sudo systemctl restart sshd

四、防火墙放行 SSH 端口(重要)

1️⃣ 查看当前端口

默认是 22

2️⃣ 放行端口

firewalld

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

ufw

sudo ufw allow 22
sudo ufw reload

五、测试 SFTP 是否可用

从本机测试

sftp localhost

从远程测试

sftp user@服务器IP

六、限制用户只能使用 SFTP(可选)

如果你希望 禁止 SSH 登录,只允许 SFTP

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

⚠️ 注意:

  • ChrootDirectory 目录必须 root 拥有且 755
  • 用户家目录不能写权限

七、常见问题排查

❌ 连接被拒绝

  • SSH 服务未启动
  • 防火墙未放行端口
  • 端口不是 22

❌ 登录成功但无法上传

  • 目录权限问题
  • Chroot 配置错误

八、总结一句话

Linux 开启 SFTP = 安装并启动 OpenSSH Server

如果你愿意,可以告诉我:

  • 你的 Linux 发行版(Ubuntu / CentOS / 麒麟 / 欧拉 等)
  • 是否要 限制用户只能 SFTP
  • 是否使用 非 22 端口

我可以给你一份完全适合你环境的配置方案

0