1

Обычно вы создаете подсистему, выполняя Subsystem vim /usr/bin/vim или что-то в этом роде. Итак, как бы я сделал подсистему, которая сделала ls -la? то есть. Вы вызываете подсистему ls, она дает вам ls, а затем закрывает канал. Не похоже, что Subsystem vim ls -la будет работать, поскольку это не путь к двоичному файлу.

Есть идеи?

1 ответ1

2

Вы можете включить аргументы командной строки в определение Subsystem . Вот часть описания "Подсистемы" из документации sshd_config:

подсистема
Настраивает внешнюю подсистему (например, демон передачи файлов). Аргументы должны быть именем подсистемы и командой (с необязательными аргументами) для выполнения по запросу подсистемы.

Так что это должно работать нормально:

Subsystem ls ls -la /some/directory

Sshd запускает команду подсистемы как команду оболочки, поэтому команда может содержать синтаксис оболочки:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .