====== 配置基于 OpenSSH 的仅用 SFTP chroot 环境 (FreeBSD) ======
不想用 FTP 的这个老协议, 而且对于端口映射/防火墙非常的不友好, 加密协议也是修修补补进去的. 而且还需要安装第三方服务端.
以下将使用系统自带的 openssh, 创建一个基于密码验证的 SFTP, 用户仅限SFTP而不能SSH登录, 而且限制在该用户的 homedir.
===== 创建用户组 =====
创建用户组 sftponly
pw groupadd sftponly
===== 创建用户 =====
创建用户 sftp_usera, 该用户使用组 sftponly, homedir 为 /home/sftponly/usera
pw useradd sftp_usera -d /home/sftponly/usera -s /usr/sbin/nologin -g sftponly
===== 设置用户密码 =====
passwd sftp_usera
===== 设置 homedir 的权限 =====
homedir 必须为 root
chown root:wheel /home/sftponly/usera
chmod 755 /home/sftponly/usera
===== 设置 /etc/ssh/sshd_config =====
配置 sftponly 的用户组成员, chroot 在 homedir, 并且仅用各种转发, 并且启用密码. 因为我的 sshd 全局是禁用了密码仅限证书验证.
在 /etc/ssh/sshd_config 末尾添加如下内容
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
===== 重新加载 sshd =====
service sshd reload
===== 缺点 =====
从homedir的权限得知, 该用户无法往这个目录写入/删除/更改, 那么解决方法是, chroot设置在 homedir 往上一级.
{{tag>freebsd ssh sftp chroot}}