在 SFTP 中设置初始远程工作目录

在 SFTP 中设置初始远程工作目录

我正在运行 Amazon Linux AMI(Red Hat 衍生产品),并使用 OpenSSH 创建新的 SFTP 服务器。我希望将 SFTP 用户限制在一个目录中,并能够写入其 SFTP 客户端显示的初始目录。

我正在使用 ChrootDirectory 将用户 chroot 到/home/customers/srgcompany。这意味着此目录必须由 root 拥有,并且只能由 root 写入。用户的密码条目如下所示fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin。我已将用户的公钥放在 中/home/fflintstone/.ssh/authorized_keys。我在 上创建了一个文件夹,用户组 ( srgcompany) 对其具有读/写/执行/sgid 权限/home/customers/srgcompany/fileshere。我已使用 配置了 OpenSSH 的 SFTP Subsystem sftp internal-sftp -u 0007 -l INFO

因此,现在,当用户使用 SFTP 客户端进行连接时,显示的目录(由 pwd 命令返回)无法写入。用户可以 cd 到 fileshere 文件夹,然后在那里写入。有没有办法让该 fileshere 文件夹在用户 SFTP 进入后立即成为初始远程工作目录,如下例所示?或者,我可以让 chrooted 文件夹可写吗?

我想要的是:

$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere

任何帮助深表感谢。

答案1

当不使用 chroot 或 internal-sftp 时,OpenSSH 包使用名为的程序sftp-server来处理传入的 SFTP 会话。sftp 服务器的文档列出起始目录的命令行选项:

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

该文档也适用于internal-sftp子系统,因此您也可以将此选项与该子系统一起使用。请注意,您应该指定相对于 chroot 的起始目录,而不是系统的实际根目录:

Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere

相关内容