Subsystem vim /usr/bin/vim
通常,您可以通过执行或类似操作来创建子系统。那么我该如何创建一个执行该操作的子系统ls -la
呢?即,您调用 ls 子系统,它会为您提供 ls,然后关闭通道。这似乎行不通,Subsystem vim ls -la
因为它不是二进制文件的路径。
有任何想法吗?
答案1
您可以在定义中包含命令行参数Subsystem
。以下是“子系统”描述的一部分,来自sshd_config 文档:
子系统
配置外部子系统(例如文件传输守护进程)。参数应该是子系统名称和命令(带有可选参数)根据子系统请求执行。
所以这应该可以正常工作:
Subsystem ls ls -la /some/directory
sshd 将子系统命令作为 shell 命令运行,因此该命令可能包含 shell 语法:
Subsystem ls ls -la /some/dir | tr a-z A-Z # Upper-cases output
另一种方法是编写一个运行所需命令的简单脚本,并将 sshd 设置为将该脚本作为子系统命令运行。例如,创建一个包含以下行的脚本并将其标记为可执行:
#!/bin/sh
exec ls -la
然后设置子系统运行脚本:
Subsystem ls /path/to/my/script