步骤一:限制 SFTP 用户可以进入的目录
1.1 限制 SFTP 用户可以进入的目录
# vim /etc/ssh/sshd_config
如果是 RHEL & CentOS Linux,将以下内容:
......
Subsystem sftp /usr/libexec/openssh/sftp-server
......
修改为:
......
# Subsystem sftp /usr/libexec/openssh/sftp-server
......
如果是 openSUSE & SLES, 将以下内容:
......
Subsystem sftp /usr/lib/ssh/sftp-server
......
修改为:
......
# Subsystem sftp /usr/lib/ssh/sftp-server
......
并添加以下内容:
......
Subsystem sftp internal-sftp
ChrootDirectory /%u
ForceCommand internal-sftp -m 770
AllowTcpForwarding no
X11Forwarding no
(
补充:
1) 这里以
SFTP 用户可以进入的目录只能为 /<user>
SFTP 上传的文件默认权限是 770 (-m 770 参数也可以使用 -u 770 替代,但是 -u 参数有时候会不起作用)
为例
2) 其它配置方案可以参考
)
1.2 让限制 SFTP 用户可以进入的目录的设置生效
# systemctl restart sshd
步骤二:禁止 SFTP 用户 SSH 登录
2.1 创建 SFTP 用户
# useradd sftpuser
(补充:这里以创建名为 sftpuser 的用户为例)
2.2 禁止 SFTP 用户 SSH 登录
# usermod -s /bin/false sftpuser
(补充:这里以将用户 sftpuser 的解释器修改成 /bin/false 为例)
或者:
# usermod -s /sbin/nologin sftpuser
(补充:这里以将用户 sftpuser 的解释器修改成 /sbin/nologin 为例)
2.3 给 SFTP 用户设置密码
# passwd sftpuser
(补充:这里以给 sftpuser 用户设置密码为例)
2.4 创建 SFTP 用户的 SFTP 目录
2.4.1 创建 SFTP 用户的 SFTP 目录
# mkdir /sftpuser
(补充:因为在本文步骤 1.1 中,设置的 SFTP 用户的目录是 /<user>,且在本文步骤 2.1 中创建的用户名是 sftpuser,所以这里的 SFTP 目录是 /sftpuser)
2.4.2 设置此 SFTP 目录的所属主为 root
# chown root: /sftpuser
(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)
2.4.3 设置此 SFTP 目录的权限为 755
# chmod 755 /sftpuser
(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)