温馨提示×

如何开启Linux SFTP服务

小樊
41
2026-07-31 12:43:48
栏目: 智能运维

在 Linux 上开启 SFTP 服务,通常是通过 OpenSSH 来实现的,因为 SFTP 是 SSH 的一部分。下面按常见发行版和步骤说明。


一、确认是否已安装 OpenSSH

1️⃣ 检查 SSH 服务状态

systemctl status sshd

或(部分系统)

systemctl status ssh

2️⃣ 如果没有安装,先安装

✅ Ubuntu / Debian

sudo apt update
sudo apt install openssh-server

✅ CentOS / Rocky / Alma / RHEL

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

二、启动并设置开机自启

sudo systemctl start sshd
sudo systemctl enable sshd

(Ubuntu 有时是 ssh

sudo systemctl start ssh
sudo systemctl enable ssh

三、确认 SFTP 是否可用(默认已开启)

SFTP 默认是 开启的,只要 SSH 正常即可使用。

测试本地连接

sftp localhost

或从另一台机器:

sftp username@服务器IP

四、检查 SFTP 配置(可选但重要)

编辑 SSH 配置文件:

sudo vi /etc/ssh/sshd_config

确认以下内容存在且未被注释:

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

或(较新系统):

Subsystem sftp internal-sftp

修改后重启 SSH:

sudo systemctl restart sshd

五、配置仅 SFTP(禁止 SSH 登录,可选)

适用于 只允许文件传输,不允许登录系统 的用户。

1️⃣ 创建用户

sudo useradd -m sftpuser
sudo passwd sftpuser

2️⃣ 修改 sshd_config

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding 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

然后重启 SSH:

sudo systemctl restart sshd

六、防火墙放行(如有)

firewalld

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

UFW(Ubuntu)

sudo ufw allow 22
sudo ufw reload

七、常见问题排查

❌ 连接被拒绝

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

❌ 登录后提示 /bin/false 或没权限

  • Chroot 目录权限不正确
  • 目录不是 root 拥有

八、总结一句话

Linux 开启 SFTP 服务 = 安装并启动 OpenSSH,SFTP 默认已启用。

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

  • 使用的 Linux 发行版
  • 是给 所有用户 还是 特定用户
  • 是否需要 禁止 SSH 登录

我可以给你一份 最适合你场景的完整配置方案

0