温馨提示×

centos sftp如何设置

小樊
38
2026-10-26 12:37:00
栏目: 智能运维

在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有以下几种常见方式。下面从最常用、最安全的方式讲起。


一、使用系统用户 + SSH 原生 SFTP(推荐)

CentOS 默认已安装 openssh-server,SFTP 可直接使用。

1. 创建 SFTP 用户

useradd sftpuser
passwd sftpuser

2. 限制用户只能使用 SFTP(不能登录 shell)

编辑 SSH 配置:

vi /etc/ssh/sshd_config

在文件末尾添加:

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

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

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

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

⚠️ ChrootDirectory 必须由 root 拥有,且其他用户不可写

4. 重启 SSH

systemctl restart sshd

5. 测试连接

sftp sftpuser@服务器IP

二、多用户 SFTP(统一目录结构)

1. 创建用户组

groupadd sftp

2. 创建用户

useradd -g sftp -s /sbin/nologin sftp1
passwd sftp1

3. sshd_config 配置

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

4. 创建目录

mkdir -p /data/sftp/sftp1/upload
chown root:sftp /data/sftp/sftp1
chmod 755 /data/sftp/sftp1
chown sftp1:sftp /data/sftp/sftp1/upload

三、使用密钥登录(更安全)

ssh-keygen -t rsa

复制公钥:

ssh-copy-id sftpuser@服务器IP

禁用密码登录(可选):

PasswordAuthentication no

四、防火墙 & SELinux

防火墙

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

SELinux(如报错)

setsebool -P ssh_chroot_rw_homedirs on

五、常见问题

✅ SFTP 连不上

  • 检查 sshd 是否运行
  • 查看 /var/log/secure

✅ 写文件失败

  • 目录权限不对(非 root 拥有 chroot)

✅ 能登录但不能列目录

  • ChrootDirectory 权限错误

如果你需要:

  • CentOS 7 / 8 / Stream 区别
  • Docker 中 SFTP
  • vsftpd vs sftp 对比
  • 图形化管理

告诉我你的使用场景即可。

0 踩