====== 配置基于 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}}