一、环境

开发环境:Win 10 --  64位
服务环境:centos7
SSH:OpenSSH_7.4p1

二、新建sftp用户:

需要root权限执行--------------------------

1.新建一个用户组

为了方便后面添加用户

groupadd sftp

2.添加用户

useradd -g sftp -s /usr/sbin/nologin fileuser

注:
-g: 指定用户所属用户组
-s: shell, /usr/sbin/nologin表示禁止用户使用SSH登录,仅可用于SFTP登录
fileuser: 用户名

配置密码

 passwd fileuser

三、创建指定FTP文件夹

1.创建限制指定用户访问的路径

mkdir -p /data/ftp/

注:此处目录的属主属组必须是root:root,且权限为755,后面会提到原因

2.设置文件夹权限

chown root:root /data/ftp/
chmod 755 /data/ftp/

四、修改配置文件

vim /etc/ssh/sshd_config

 注释Subsystem sftp /usr/lib/openssh/sftp-server
在配置文件中添加如下配置:

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

Subsystem sftp internal-sftp 表示sftp服务使用系统自带的internal-sftp
Match Group sftp 表示配置指定的组,此处也可以写成Match User fileuser来指定配置的用户
ForceCommand internal-sftp 表示强制使用系统internal-sftp
ChrootDirectory /data/sftp/%u 表示指定用户根目录,%u表示当前的用户,ChrootDirectory 指定的目录及该目录到系统根目录为止,目录拥有者都只能是root。
AllowTcpForwarding no 禁止TCP转发
X11Forwarding no 禁止X11转发

后面两项可根据实际情况来添加
注:上述配置类,参考https://www.cnblogs.com/convict/p/16411632.html,可以看看原文,讲解更详细

五、重启SSH服务

systemctl restart sshd

或者 

service ssh restart 

启动成功后,使用sftp工具连接
 

 如图,用户登录上sftp后,只能看到配置的目录。此处显示的根目录实际为ChrootDirectory /data/sftp/%u配置指定的目录。
可以在此目录下创建属于fileuser用户的操作目录,如:

mkdir -p /data/ftp/fileuser/work/

赋予权限

chown fileuser:sftp /data/ftp/fileuser/work/

完结,撒花!!!!!!!

原文参考:  Linux配置sftp用户访问指定目录_sftp登录到指定目录_Program灬Ape的博客-CSDN博客

Logo

更多推荐