sftp 服务器 chroot 初始目录

sftp 服务器 chroot 初始目录

我已经用 chroot 配置了一个 sftp 服务器,它运行良好,唯一困扰我的是初始登陆目录,因为 sftp 用户在登陆文件夹中没有写权限,所以他必须转到以他自己的用户名命名的文件夹来上传文件。

我设置了:ForceCommand internal-sftp -d %u,我在一些配置指南中找到了这个,他们说它应该会更改登录文件夹,但它不起作用。一开始我为 passwd 处的用户登录配置了一个空脚本,但我将其更改为 /bin/bash,以防它可能与此有关。我重新启动了服务,所以这可能不是原因。

也许这可能与我所使用的发行版的 ssh 版本有关,或者 sshd 根本无法做到这一点?

以下是我的 sshd 配置:

CentOS 版本 6.6(最终版)

OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 201 年 2 月 11 日

Subsystem sftp internal-sftp

Match group sftponly
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp -d %u

答案1

您可以使用-dsftp 选项来更改起始目录。请参阅sftp-server(8)手册页:

-d 起始目录

为用户指定备用起始目录。路径名可能包含以下在运行时扩展的标记:%%被文字“%”替换、%h被正在验证的用户的主目录替换、%u被该用户的用户名替换。默认使用用户的主目录。此选项与 sshd_config(5) 选项配合使用很有用ChrootDirectory

您可以将其作为 的参数来实现这一点internal-sftp,例如:

Subsystem sftp internal-sftp -d "%h/sftp_home/"

此外,如果您使用强制命令,则可能需要调整它:

 ForceCommand internal-sftp -d "%h/sftp_home/"

自版本 6.2 起,openssh 上应该可以使用此功能

相关内容