执行 ls 的 ssh 子系统

执行 ls 的 ssh 子系统

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

相关内容