尝试使用 OpenSSH_7.4p1 设置高度受限的 SFTP 服务器,以便远程脚本上传数据。目标是一个黑洞,脚本可以使用用户级别的键执行“放置”,而其他服务器命令是不可能的。一切正常,直到最后一步我尝试限制sftp
命令集使用-P
和-p
此sshd_config
Match
子句中的选项:
Match user globalstat
ChrootDirectory /inbound
ForceCommand internal-sftp -d data -p put -P df,pwd,rm,mkdir,rmdir,get,rename,symlink
-P
尝试了多种组合,但denied_requests
永远不会阻止任何指定的远程命令。应用或中断传输并返回allowed_requests
" Couldn't canonicalise: Permission denied Need cwd"。没有or ,写入没有问题,并且基于此错误的其他帖子,我很确定我的目录权限是正确的。我一直在使用此手册页作为参考:https ://www.man7.org/linux/man-pages/man8/sftp-server.8.html-p put
put,cd
-P
-p
这意味着not 是这些选项的位置,但它们在主体中不起作用,并且如果在子句中使用sshd而Subsystem
不是.ForceCommand
sshd_config
Subsystem
Match
ForceCommand
我真的希望有可能得到这个工作,任何建议将不胜感激。
-p
/的参数-P
是低级SFTP 协议请求的名称。不是高级 OpenSSHsftp
客户端命令。这些是名称:
open
,close
,read
,write
,lstat
,fstat
,setstat
,fsetstat
,opendir
,readdir
,remove
,mkdir
,rmdir
,realpath
,stat
,rename
,readlink
,symlink
,posix-rename
,statvfs
,fstatvfs
,hardlink
,fsync
,lsetstat
.sftp-server -Q requests
正如sftp-server
手册页所说,您可以通过运行获得最新列表。鉴于已经回答了这个问题,我将只提一个最初导致我来到这里的问题:
尽管
internal-sftp ...
表达式看起来像一个普通的命令,但双引号似乎并没有像往常一样被处理。这不适用于mkdir
andsymlink
:这将: