sftp 服务器 chroot 初始目录

Car*_*dal 6 ssh chroot sftp centos6

我已经用 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
Run Code Online (Sandbox Code Playgroud)

Jak*_*uje 5

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

-d 开始目录

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

您可以通过将 this 作为参数来执行此操作internal-sftp,例如:

Subsystem sftp internal-sftp -d "%h/sftp_home/"
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用以下命令,您可能需要调整您的 force-command:

 ForceCommand internal-sftp -d "%h/sftp_home/"
Run Code Online (Sandbox Code Playgroud)

自 6.2 版以来,这应该在 openssh 上可用

  • 这对我来说在“OpenSSH_7.3p1 Ubuntu-1, OpenSSL 1.0.2g 1 Mar 2016”上不太适用。有效的是指定`Subsystem sftp internal-sftp`(无附加参数),然后是`ForceCommand internal-sftp -d {dir_relative_to_chroot}`。 (3认同)