Linux 创建 SFTP 用户

创建 FTP 目录

在服务器中,指定一个特定目录为 ftp 根目录(这里假设根目录为 /data/sftp)。

在该目录下存储各种用户的 ftp 目录。

这里需要注意一下,由于 ChrootDirectory 指令的限制,用户的 ftp 目录归 root 所有。需要在用户目录下新建目录,指定所有人为具体的用户。否则的话,会报 sftp fatal: bad ownership or modes for chroot directory 报错。

这里以用户 demo 为例。

# 创建根目录
mkdir -p /data/sftp
# 创建用户 ftp 目录
mkdir -p /data/sftp/demo
# 创建文件存储目录
mkdir -p /data/sftp/demo/files

创建用户

创建用户组,执行以下命令:

# 创建用户组
groupadd sftp_users

创建用户,执行以下命令:

useradd -r -g sftp_users -s /sbin/nologin demo

参数说明:

变更文件存储目录权限,使用户可以正常上传下载文件:

chown demo:sftp_users /data/sftp/demo/files
chmod 755 /data/sftp/demo/files

编辑 sshd_config 文件

vim /etc/ssh/sshd_config

启用 SFTP 子系统

Subsystem sftp internal-sftp

如果存在该行,注释掉原有的,添加上面的。

配置 SFTP 用户访问

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

参数说明:

调试

执行以下命令查看 sshd 服务的输出

journalctl -u sshd.service

资料