温馨提示×

怎样在Debian中配置SFTP

小樊
44
2025-10-24 10:08:48
栏目: 智能运维

在Debian中配置SFTP的详细步骤

1. 安装OpenSSH服务器

Debian系统通常预装OpenSSH服务器,若未安装,可通过以下命令快速安装:

sudo apt update
sudo apt install openssh-server

2. 配置SSH服务器以支持SFTP

编辑SSH核心配置文件/etc/ssh/sshd_config(需root权限):

sudo nano /etc/ssh/sshd_config

进行以下关键修改:

  • 启用内置SFTP子系统:找到# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为internal-sftp(更轻量且无需额外安装):
    Subsystem sftp internal-sftp
    
  • 限制用户仅能使用SFTP(可选但推荐):在文件末尾添加以下配置,将sftpusers组内的用户限制在自家目录(ChrootDirectory),并禁用端口转发、X11转发等非必要功能:
    Match Group sftpusers
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    

    注:Match块需放在文件末尾,避免与其他配置冲突。

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

  • 创建SFTP用户组(用于统一管理权限):
    sudo groupadd sftpusers
    
  • 创建用户并加入组:以ftpuser为例,创建用户时设置密码,并将其添加到sftpusers组:
    sudo adduser ftpuser        # 按提示设置密码及个人信息
    sudo usermod -aG sftpusers ftpuser  # 将用户追加到sftpusers组
    
  • 设置用户主目录权限:SFTP要求用户主目录的所有者为该用户,权限为755(确保用户可读写自身目录,但无法修改目录权限):
    sudo chown ftpuser:ftpuser /home/ftpuser
    sudo chmod 755 /home/ftpuser
    
  • 创建上传目录(可选但实用):为用户创建专属上传目录,并赋予写入权限:
    sudo mkdir /home/ftpuser/upload
    sudo chown ftpuser:sftpusers /home/ftpuser/upload  # 所属组设为sftpusers,允许组内用户上传
    

4. 重启SSH服务使配置生效

修改配置后,需重启SSH服务以应用更改:

sudo systemctl restart sshd

若需验证服务状态,可执行:

sudo systemctl status sshd

确保显示“active (running)”即为正常。

5. 测试SFTP连接

使用SFTP客户端(如Linux终端或WinSCP)连接服务器,验证配置是否成功:

sftp ftpuser@your_server_ip

输入密码后,若成功登录并显示用户主目录(如/home/ftpuser),且能执行lsputget等命令,则说明配置生效。

注:若配置了ChrootDirectory,用户将无法访问主目录以外的路径(如/root/etc)。

常见问题排查

  • 连接失败:检查SSH服务是否运行(sudo systemctl status sshd),或防火墙是否放行22端口(sudo ufw allow 22)。
  • 权限错误:确保用户主目录所有者为该用户(chown),且权限为755(chmod);上传目录需属于用户组且有写入权限(chown ftpuser:sftpusers upload)。
  • 日志分析:若仍无法解决,可查看SSH日志获取详细错误信息:
    sudo tail -f /var/log/auth.log
    

0