温馨提示×

centos sftp怎么配置

小樊
39
2026-10-17 15:20:35
栏目: 智能运维

在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有两种常见方式:


一、使用系统用户 + SSH 自带 SFTP(最简单)

1. 创建用户

useradd sftpuser
passwd sftpuser

2. 确保 SSH 服务已安装并运行

systemctl status sshd
# 若未运行
systemctl start sshd
systemctl enable sshd

3. 默认即可使用 SFTP

sftp sftpuser@服务器IP

✅ 这种方式 直接使用系统密码登录 SFTP


二、限制用户只能 SFTP,不能 SSH 登录(推荐)

1. 创建用户并指定家目录

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

2. 修改 SSH 配置

vi /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

3. 设置目录权限(非常重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser

mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

4. 重启 SSH

systemctl restart sshd

5. 测试

sftp sftpuser@服务器IP

✅ 用户 只能 SFTP,不能 SSH 登录


三、多用户 SFTP 统一配置(组方式)

1. 创建 SFTP 组

groupadd sftpusers

2. 添加用户

useradd -m -g sftpusers -s /sbin/nologin user1
useradd -m -g sftpusers -s /sbin/nologin user2

3. sshd_config 配置

Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no

4. 创建目录

mkdir -p /data/sftp/user1/upload
chown root:root /data/sftp/user1
chown user1:sftpusers /data/sftp/user1/upload

四、防火墙 & SELinux

防火墙

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

SELinux(如报错)

setsebool -P ssh_chroot_rw_homedirs on

五、常见问题

❌ Connection closed
→ Chroot 目录属主必须是 root

❌ Permission denied
→ 上传目录权限不对

❌ 能 SSH 不能限制
→ ForceCommand 没写对


如果你愿意,我可以:

  • 帮你写 一键配置脚本
  • 配置 密钥登录 SFTP
  • 配置 vsftpd(非 SSH)FTP

你用的是 CentOS 7 还是 8 / Stream?

0 踩