文档首页> 常见问题> 如何在Linux云服务器上配置SFTP服务?

如何在Linux云服务器上配置SFTP服务?

发布时间:2025-04-24 19:45       

Linux云服务器SFTP配置全指南:安全文件传输一步到位

在数字化办公时代,SFTP(SSH文件传输协议)已成为云服务器文件管理的黄金标准。与传统的FTP相比,SFTP通过SSH加密通道传输数据,有效防止敏感信息泄露。本文将手把手教您在Linux云服务器上配置专业级SFTP服务,包括用户权限控制、目录限制等高级技巧。

一、基础环境准备

以CentOS 7为例(其他发行版命令略有差异):

# 系统更新
sudo yum update -y
# 安装EPEL仓库
sudo yum install epel-release -y

二、OpenSSH服务检查

现代Linux发行版通常预装OpenSSH:

# 查看SSH版本
ssh -V
# 确保服务运行
systemctl status sshd

提示:建议使用OpenSSH 8.0+版本以获得更好的安全特性

三、创建专用用户组

通过用户组实现权限隔离:

# 创建sftp用户组
sudo groupadd sftpusers
# 创建用户并指定主目录
sudo useradd -G sftpusers -s /sbin/nologin -d /data/sftp/user1 user1
# 设置密码
sudo passwd user1
# 创建隔离的SFTP根目录
sudo mkdir -p /data/sftp/user1/upload
# 设置目录权限
sudo chown root:root /data/sftp/user1
sudo chmod 755 /data/sftp/user1
sudo chown user1:sftpusers /data/sftp/user1/upload

四、SSHD核心配置

编辑/etc/ssh/sshd_config

# 禁用SFTP子系统默认配置
#Subsystem sftp /usr/lib/exec/openssh/sftp-server

# 添加以下内容到文件末尾
Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

重启服务生效:systemctl restart sshd

五、防火墙配置

开放SSH默认端口:

# firewalld配置
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

# 若修改默认端口(如2222):
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo firewall-cmd --permanent --add-port=2222/tcp

六、客户端连接验证

使用FileZilla等工具测试:

  1. 协议选择:SFTP - SSH File Transfer Protocol
  2. 主机填写云服务器IP
  3. 端口默认为22(或自定义端口)
  4. 用户名/密码填写创建的用户凭证

七、高级安全方案

  • 密钥认证:禁用密码登录,使用ssh-keygen生成密钥对
  • IP限制:通过/etc/hosts.allowhosts.deny限制访问源IP
  • 日志监控:配置/etc/rsyslog.conf实现SFTP操作审计
  • 速率限制:使用ufw limit防止暴力破解

最佳实践总结

通过本教程配置的SFTP服务具备以下优势:

  • 严格的目录隔离(Chroot环境)
  • 细粒度的权限控制
  • SSH级别的加密传输
  • 可扩展的用户管理体系

建议每月检查/var/log/secure日志,及时更新OpenSSH版本以修复安全漏洞。