温馨提示×

SFTP配置有哪些关键步骤

小樊
47
2025-10-31 23:44:49
栏目: 编程语言

1. 安装OpenSSH服务器
SFTP基于SSH协议,需先确保系统安装OpenSSH服务器。对于Debian/Ubuntu系统,使用sudo apt update && sudo apt install openssh-server;对于CentOS/RHEL系统,使用sudo yum install openssh-server(或dnf install openssh-server)。安装完成后启动服务并设置开机自启:sudo systemctl start sshdsudo systemctl enable sshd

2. 创建专用SFTP用户组与用户
为隔离权限,建议创建专门的用户组(如sftpusers)和用户。创建组:sudo groupadd sftpusers;创建用户(禁止SSH登录):sudo useradd -g sftpusers -s /sbin/nologin -d /home/sftpuser sftpuser-s /sbin/nologin限制无法通过SSH登录);设置密码:sudo passwd sftpuser

3. 配置SSH服务限制SFTP访问
编辑SSH配置文件/etc/ssh/sshd_config,关键修改如下:

  • 启用内置SFTP子系统:找到Subsystem sftp行,修改为Subsystem sftp internal-sftp(使用OpenSSH内置的SFTP服务,无需额外安装);
  • 限制用户组与Chroot目录:在文件末尾添加Match Group sftpusers块,内容为:
    Match Group sftpusers
        ChrootDirectory %h  # 将用户限制在其家目录(%h代表用户家目录)
        ForceCommand internal-sftp  # 强制使用SFTP子系统,禁止SSH shell访问
        AllowTcpForwarding no  # 禁止TCP转发(增强安全性)
        X11Forwarding no  # 禁止X11转发
    
    保存退出后,重启SSH服务:sudo systemctl restart sshd

4. 设置Chroot目录及子目录权限
Chroot目录(用户家目录)必须属主为root,权限为755(防止用户修改目录结构);用户上传目录需属主为用户自身,权限为755(允许上传文件)。操作步骤:

  • 创建家目录并设置权限:sudo mkdir -p /home/sftpusersudo chown root:root /home/sftpusersudo chmod 755 /home/sftpuser
  • 创建上传子目录:sudo mkdir -p /home/sftpuser/upload
  • 设置上传目录权限:sudo chown sftpuser:sftpusers /home/sftpuser/uploadsudo chmod 755 /home/sftpuser/upload

5. (可选)配置SELinux(若系统启用)
若系统启用SELinux(如CentOS默认开启),需调整策略允许SFTP访问用户目录:

  • 启用SFTP home目录访问:sudo setsebool -P sftp_home_dir on
  • 修改上传目录的安全上下文:sudo chcon -Rv --reference=/home/sftpuser /home/sftpuser/upload(使目录继承家目录的安全上下文)。

6. 测试SFTP连接
使用SFTP客户端(命令行或图形界面)连接服务器,验证配置是否成功。命令行测试:sftp sftpuser@your_server_ip,输入密码后若进入SFTP交互模式(显示sftp>提示符),则配置正确;图形界面可使用FileZilla,输入服务器IP、用户名、密码,选择“SFTP - SSH File Transfer Protocol”协议连接。

0