OpenSSH internal-sftp 不接受允许/拒绝的请求

OpenSSH internal-sftp 不接受允许/拒绝的请求

尝试使用 OpenSSH_7.4p1 设置高度受限的 SFTP 服务器,以便远程脚本上传数据。目标是黑洞,其中脚本可以使用用户级密钥执行“put”,并且无法执行其他服务器命令。一切都很顺利,直到最后一步,我尝试使用此子句中的选项来限制命令sftp集:-P-psshd_config Match

Match user globalstat
    ChrootDirectory /inbound
    ForceCommand internal-sftp -d data -p put -P df,pwd,rm,mkdir,rmdir,get,rename,symlink

尝试了各种组合,但-Pfordenied_requests永远不会阻止任何指定的远程命令。应用allowed_requestswith-p putput,cd会中断传输并返回“无法规范化:权限被拒绝,需要 cwd”。如果没有-P-p,则写入没有问题,并且根据此错误的其他帖子,我很确定我的目录权限是正确的。我一直在使用此手册页作为参考:
https://www.man7.org/linux/man-pages/man8/sftp-server.8.html

这意味着Subsystem而不是ForceCommand是这些选项的位置,但它们在的主体中不起作用,并且如果在子句中使用而不是,sshd_config则重新启动 sshd 会引发错误。SubsystemMatchForceCommand

我真的希望这能够实现,任何建议都将不胜感激。

答案1

-p/的参数-P是低级SFTP 协议请求. 不是高级 OpenSSHsftp 客户端命令

这些是名字:open,,,,,,,,,,,,,,,,,,,,,,,,,,,close。​​​​​​​​​​​​​​​​​​​readwritelstatfstatsetstatfsetstatopendirreaddirremovemkdirrmdirrealpathstatrenamereadlinksymlinkposix-renamestatvfsfstatvfshardlinkfsynclsetstat

您可以通过运行获取最新列表sftp-server -Q requests,如下所示sftp-server手册页说

答案2

鉴于该问题已经得到解答,我只想提及最初引导我到这里的一个问题:

尽管表达式看起来像一个普通命令,但双引号似乎无法像往常一样处理。这对andinternal-sftp ...不起作用:mkdirsymlink

ForceCommand internal-sftp -l INFO -P "mkdir,rmdir,ln,symlink"

这会:

ForceCommand internal-sftp -l INFO -P mkdir,rmdir,ln,symlink

相关内容