用户工具

站点工具


freebsd:openssh_sftp_chroot_only

配置基于 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 往上一级.

freebsd/openssh_sftp_chroot_only.txt · 最后更改: 2022/05/09 05:15 由 Hshh