插件窝 干货文章 如何配置SFTP服务器

如何配置SFTP服务器

SFTP sudo SSH sftpuser 882    来源:    2025-05-07

SFTP服务器配置指南

SFTP (SSH File Transfer Protocol) 是一种安全的文件传输协议,基于SSH协议实现。以下是配置SFTP服务器的详细步骤:

1. 安装OpenSSH服务器

大多数Linux发行版默认包含OpenSSH服务器,如果没有安装:

# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server

# CentOS/RHEL
sudo yum install openssh-server

2. 基本配置

编辑SSH配置文件 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

确保以下配置项:

# 启用SFTP子系统
Subsystem sftp internal-sftp

# 禁用root登录(推荐)
PermitRootLogin no

# 允许密码认证(如果使用密钥认证可设为no)
PasswordAuthentication yes

3. 创建SFTP专用用户组和用户

# 创建SFTP用户组
sudo groupadd sftpusers

# 创建SFTP用户
sudo useradd -G sftpusers -s /bin/false sftpuser
sudo passwd sftpuser  # 设置密码

4. 配置用户目录权限

# 创建SFTP根目录
sudo mkdir -p /var/sftp/uploads

# 设置目录所有权
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp

# 为用户创建专用目录
sudo mkdir -p /var/sftp/uploads/sftpuser
sudo chown sftpuser:sftpusers /var/sftp/uploads/sftpuser
sudo chmod 700 /var/sftp/uploads/sftpuser

5. 限制用户只能使用SFTP

/etc/ssh/sshd_config 文件末尾添加:

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

6. 重启SSH服务

# Ubuntu/Debian
sudo systemctl restart ssh

# CentOS/RHEL
sudo systemctl restart sshd

7. 测试连接

使用SFTP客户端连接测试:

sftp sftpuser@your_server_ip

高级配置选项

使用密钥认证

  1. 生成密钥对(在客户端)

    ssh-keygen -t rsa
    
  2. 将公钥上传到服务器

    ssh-copy-id sftpuser@your_server_ip
    
  3. /etc/ssh/sshd_config 中设置:

    PasswordAuthentication no
    PubkeyAuthentication yes
    

限制用户带宽

/etc/ssh/sshd_config 中添加:

Match Group sftpusers
    # 限制带宽为100KB/s
    ForceCommand internal-sftp -l 100

日志记录

启用详细日志记录:

Subsystem sftp internal-sftp -l INFO -f AUTH

防火墙设置

确保防火墙允许SSH端口(默认22):

# UFW (Ubuntu)
sudo ufw allow 22/tcp

# Firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

安全性建议

  1. 定期更新SSH服务器软件
  2. 考虑更改默认SSH端口
  3. 使用fail2ban防止暴力破解
  4. 定期检查日志文件 /var/log/auth.log/var/log/secure

通过以上步骤,您应该已经成功配置了一个安全的SFTP服务器。根据您的具体需求,可以进一步调整配置参数。