示例:给网站账号jundax创建sftp登录,chroot 账号自己的目录中 并禁止ssh登录方法:
步骤如下:
1,创建一个sftp组。
命令如下:groupadd sftp
2,创建sftp根目录,所有用户的目录都放在这个根目录下。
命令如下: mkdir -p /storage/sftp
3,创建一个用户 用户目录放到 /storage/sftp 下
命令如下: useradd jundax -s /sbin/nologin -g sftp -d /storage/sftp/jundax -m
-s 指定用户的shell, -g指定用户加入的组, -d 指定用户的家目录 -m 指明要创建家目录的文件夹 -M 正好相反,为不创建家目录
4,更改用户家目录权限【如果chroot的目录用户属主不是root,用户是登录不了的】
命令如下: chown root:sftp jundax
5,设置 jundax 密码为 123456
命令如下:echo jundax:123456 | chpasswd #非交互式设置密码
也可以使用下面等同命令: echo '123456'| passwd --stdin jundax
6,编辑 /etc/ssh/sshd_config文件,在文件最后增加如下内容:
内容如下:
vim /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftp #匹配sftp 的用户
# Example of overriding settings on a per-user basis
ChrootDirectory /storage/sftp/%u #这里%u 代表用户家目录,比如jundax,jundax1,jundax2 三个用户,登录后家目录chroot
ForceCommand internal-sftp #通过man sshd-config 可以具体看其解释
X11Forwarding no
AllowTcpForwarding no
保存后,然后 systemctl restart sshd
7,这样用户登录后,用户登录进来的目录为 / ,并且不能cd 到上级目录,但是不能向里面传输任何文件,
都会提示permission denied
可以在里面新建一个upload 目录 然后 chown 属主和组为 jundax:sftp
命令如下:
mkdir -p /storage/sftp/jundax/upload
chown jundax:sftp /storage/sftp/jundax/upload
然后使用 jundax 密码:123456登录看看,/ 目录下传文件被拒绝,切换到upload 目录可以正常传文件和目录
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!