linux

SFTP服务器配置步骤

小樊
39
2025-11-07 04:28:49
栏目: 云计算

一、安装OpenSSH服务器
SFTP是SSH的扩展协议,依赖OpenSSH软件包。大多数Linux发行版默认安装OpenSSH,若未安装,可通过以下命令安装:

二、配置SSH服务以启用SFTP
编辑SSH主配置文件/etc/ssh/sshd_config,修改以下关键参数:

  1. 启用内置SFTP子系统:找到Subsystem sftp行,取消注释或修改为Subsystem sftp internal-sftp(推荐使用内置子系统,无需额外安装sftp-server)。
  2. 限制用户组及权限:在文件末尾添加以下内容,将<用户组名>替换为自定义组(如sftpusers):
    Match Group <用户组名>
        ChrootDirectory %h      # 将用户限制在其家目录(%h为用户主目录占位符)
        ForceCommand internal-sftp  # 强制使用SFTP,禁用SSH shell访问
        AllowTcpForwarding no   # 禁止TCP转发
        X11Forwarding no        # 禁止X11转发
    
    保存并退出编辑器(Ctrl+XYEnter)。

三、创建专用SFTP用户组及用户

  1. 创建用户组sudo groupadd <用户组名>(如sftpusers)。
  2. 创建用户并加入组
    • 创建用户(设置家目录,避免使用/home外的路径):sudo useradd -m -G <用户组名> -s /sbin/nologin <用户名>-s /sbin/nologin禁止用户通过SSH登录shell)。
    • 设置用户密码:sudo passwd <用户名>(输入两次密码)。
      示例(创建sftpuser用户):sudo useradd -m -G sftpusers -s /sbin/nologin sftpuser && sudo passwd sftpuser

四、设置Chroot目录权限
Chroot目录(用户家目录)必须归root所有,且权限为755,防止用户越权修改目录结构:

  1. 创建家目录(若未自动创建):sudo mkdir -p /home/<用户名>(如/home/sftpuser)。
  2. 设置所有权与权限
    • root所有:sudo chown root:root /home/<用户名>
    • 设置权限:sudo chmod 755 /home/<用户名>
  3. 创建上传子目录(可选,用于用户上传文件):
    • sudo mkdir /home/<用户名>/upload
    • 归用户所有:sudo chown <用户名>:<用户组名> /home/<用户名>/upload
    • 设置权限:sudo chmod 755 /home/<用户名>/upload(或775,允许用户写入)。

五、重启SSH服务应用配置
修改配置后,重启SSH服务使更改生效:

六、测试SFTP连接
使用SFTP客户端(如命令行、FileZilla或WinSCP)连接服务器:

  1. 命令行测试:在终端输入sftp <用户名>@<服务器IP>,输入密码后若进入SFTP交互模式(显示sftp>),则配置成功。
  2. 常用命令验证
    • 上传文件:put 本地文件路径 远程文件路径(如put ~/test.txt /upload/test.txt)。
    • 下载文件:get 远程文件路径 本地文件路径(如get /upload/test.txt ~/download/test.txt)。
    • 列出目录:ls(远程)或lls(本地)。
    • 退出:exitbye

七、安全增强建议

  1. 防火墙配置:允许SSH端口(默认22)通过防火墙:
    • CentOS(firewalld)sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
    • Ubuntu(ufw)sudo ufw allow ssh
  2. SELinux配置(若启用):若系统启用SELinux,需调整策略允许SFTP访问用户目录:
    • sudo setsebool -P ssh_chroot_rw_homedirs on(允许chroot目录读写)。
  3. 强密码策略:要求用户设置复杂密码(包含大小写字母、数字、特殊字符),定期更换密码。
  4. 定期更新:保持系统和OpenSSH软件包为最新版本,修复安全漏洞。

0
看了该问题的人还看了