温馨提示×

centos sftp目录如何指定

小樊
49
2026-09-09 00:28:38
栏目: 智能运维

在 CentOS 上“指定 SFTP 目录”通常有两种常见场景:

  1. 限制某个用户只能访问指定目录(Chroot)
  2. 修改 SFTP 服务本身的根目录或用户家目录

下面分别说明。


一、限制用户 SFTP 只能访问指定目录(最常用)

1. 创建用户并指定目录

useradd -m -d /data/sftp/user1 -s /sbin/nologin user1
passwd user1

2. 创建 SFTP 根目录(Chroot 目录)

mkdir -p /data/sftp/user1
chown root:root /data/sftp/user1
chmod 755 /data/sftp/user1

⚠️ Chroot 目录 必须属于 root,且其他用户不能写

3. 创建用户可写子目录

mkdir /data/sftp/user1/upload
chown user1:user1 /data/sftp/user1/upload

4. 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

注释或确认:

# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp

在文件末尾添加:

Match User user1
    ChrootDirectory /data/sftp/user1
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

5. 重启 SSH

systemctl restart sshd

6. 测试

sftp user1@服务器IP

登录后只能在 /data/sftp/user1 内操作


二、修改 SFTP 用户家目录(非 Chroot)

如果只是想让用户登录后默认在指定目录:

usermod -d /path/to/dir user1

注意:

  • 该目录必须存在
  • 用户需有访问权限

三、多用户统一 SFTP 目录(推荐方式)

Match Group sftpusers
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
groupadd sftpusers
usermod -G sftpusers user1

四、常见问题

SFTP 登录失败

查看日志:

tail -f /var/log/secure

常见错误:

  • Chroot 目录不是 root 所有
  • 目录权限过大(不能 777)
  • SELinux 未放行

SELinux 设置(如开启)

setsebool -P ssh_chroot_rw_homedirs on

如果你能说明:

  • 是 单用户还是多用户
  • 是否 需要写权限
  • 是否 禁止 SSH 登录

我可以给你一份可直接用的配置。

0 踩