我已经用 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
您可以使用-d
sftp 选项来更改起始目录。请参阅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 上应该可以使用此功能