服务器测评网
我们一直在努力

Linux SFTP服务器如何搭建?详细步骤与注意事项

SFTP 简介

SFTP(SSH File Transfer Protocol)是基于 SSH 协议的文件传输工具,通过加密通道实现安全文件传输,相比 FTP 具备更高的安全性,在 Linux 系统中,SFTP 通常作为 OpenSSH 的一部分提供,无需额外安装服务端软件,仅需配置 SSH 服务即可使用,本文将详细介绍在 Linux 系统中搭建 SFTP 服务的步骤、配置方法及注意事项。

Linux SFTP服务器如何搭建?详细步骤与注意事项

环境准备

  1. 系统要求:建议使用主流 Linux 发行版,如 Ubuntu 20.04+、CentOS 7+ 或 RHEL 8+,确保系统已更新至最新状态。
  2. 依赖软件:SFTP 依赖 OpenSSH 服务,需确认系统是否已安装,通过以下命令检查:
    • Ubuntu/Debian:ssh --version
    • CentOS/RHEL:rpm -q openssh-server
      若未安装,可通过包管理器安装:
    • Ubuntu/Debian:sudo apt update && sudo apt install openssh-server
    • CentOS/RHEL:sudo yum install openssh-server

SFTP 服务配置

启动并启用 SSH 服务

安装完成后,启动 SSH 服务并设置开机自启:

sudo systemctl start sshd    # 启动服务(CentOS/RHEL)
sudo systemctl enable sshd   # 设置开机自启
sudo systemctl start ssh     # Ubuntu/Debian 启动命令
sudo systemctl enable ssh    # Ubuntu/Debian 开机自启

检查服务状态:sudo systemctl status sshd(或 ssh),确保显示 active (running)

创建 SFTP 专用用户

为增强安全性,建议为 SFTP 创建独立用户,限制其仅能通过 SFTP 访问,无法 SSH 登录。

  • 创建用户:以 sftpuser 为例,设置家目录为 /home/sftpuser,禁止 SSH 登录:
    sudo useradd -m -d /home/sftpuser -s /usr/sbin/nologin sftpuser
    sudo passwd sftpuser          # 设置用户密码
    • -m:自动创建家目录;
    • -s /usr/sbin/nologin:禁止 SSH 登录(关键配置)。

配置 SSH 支持SFTP

编辑 SSH 配置文件 /etc/ssh/sshd_config,调整以下参数:

Linux SFTP服务器如何搭建?详细步骤与注意事项

sudo vim /etc/ssh/sshd_config
  • 启用 SFTP 子系统:确保以下行未被注释(默认存在):
    Subsystem sftp internal-sftp
  • 限制用户访问:在文件末尾添加配置块,为 sftpuser 设置沙箱目录(仅能访问 /home/sftpuser):
    Match User sftpuser
        ChrootDirectory /home/sftpuser
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    • ChrootDirectory:限制用户家目录为根目录,无法上级访问;
    • ForceCommand internal-sftp:强制使用 SFTP 子系统,禁用 SSH 其他功能。

设置目录权限

SFTP 的 Chroot 功能要求目录属主为 root,且用户对目录需有执行权限:

sudo chown root:root /home/sftpuser    # 目录属主设为 root
sudo chmod 755 /home/sftpuser          # 设置权限(用户可读/写/执行)

若需上传文件,可在家目录内创建子目录并授权用户:

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

重启 SSH 服务

配置完成后,重启 SSH 服务使生效:

sudo systemctl restart sshd    # CentOS/RHEL
sudo systemctl restart ssh     # Ubuntu/Debian

防火墙与端口配置

默认情况下,SFTP 使用 SSH 的 22 端口,若系统启用防火墙,需放行该端口:

Linux SFTP服务器如何搭建?详细步骤与注意事项

  • Ubuntu (ufw)
    sudo ufw allow 22/tcp
    sudo ufw reload
  • CentOS/RHEL (firewalld)
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

客户端连接测试

使用 SFTP 客户端工具(如 FileZilla、WinSCP 或命令行)连接测试,以命令行为例:

sftp sftpuser@服务器IP

输入密码后,若成功进入 sftp> 提示符,表示搭建成功,可通过以下命令操作:

  • ls:列出文件
  • put local_file:上传文件
  • get remote_file:下载文件

常见问题与注意事项

问题现象 可能原因及解决方案
用户无法登录 检查 /etc/ssh/sshd_configChrootDirectory 权限是否为 755,属主是否为 root;确认密码正确。
连接超时 检查防火墙是否放行 22 端口;确认 SSH 服务运行状态。
用户可通过 SSH 登录 确认用户 shell 设置为 /usr/sbin/nologin,或 Match User 配置块位置错误。
上传文件提示权限不足 检查目标目录属主是否为用户,权限是否包含 w(如 755)。

通过以上步骤,即可在 Linux 系统中快速搭建安全的 SFTP 服务,关键点在于:创建专用用户、配置 Chroot 沙箱环境、严格设置目录权限,SFTP 凭借其加密特性和灵活性,适用于文件共享、数据备份等场景,是企业级文件传输的常用工具,实际使用中,建议结合密钥认证进一步提升安全性,并定期审计日志以监控访问行为。

赞(0)
未经允许不得转载:好主机测评网 » Linux SFTP服务器如何搭建?详细步骤与注意事项