Ключ OpenSSH с command: ограничить не только запускаемую программу
Фотография конкретного исполнения не приложена.
Опция command в authorized_keys заменяет команду, запрошенную клиентом, на предусмотренную сервером. Это полезно для узкой операции обслуживания либо передачи данных. Но само указание forced command не означает автоматический запрет TCP, X11 или иных отдельно разрешённых возможностей сессии.
Restrict объединяет предусмотренные ограничения, которые затем могут уточняться отдельными опциями. Проект должен перечислять допустимые возможности целиком, а не оценивать доступ только по отсутствию обычной интерактивной оболочки. Также учитывают серверный ForceCommand, который способен изменить итоговую команду независимо от строки ключа.
Первоначальная команда клиента доступна в SSH_ORIGINAL_COMMAND. Если wrapper использует её для выбора действия, она остаётся внешним входом и требует проверки допустимых операций и аргументов. Нельзя без разбора считать её доверенным продолжением серверной команды. Для передачи двоичных данных отдельно согласуют отсутствие PTY и его преобразований.
В приёмке проверяют разрешённую операцию, другую команду, недопустимые аргументы и ненужные forwarding-запросы на тестовом доступе. Сверяют реальные ограничения, не изменяя ключей в этом разборе. Успешный запуск forced command не подтверждает, что обслуживающая identity получила только предусмотренный узкий набор возможностей.
Основание — OpenSSH current OpenBSD manuals snapshot; portable release10.6 observed, not exact portable manual, разделы authorized_keys: command; restrict; SSH_ORIGINAL_COMMAND. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Удалённые узлы, ключи и файлы не проверялись; подключения, копирование и изменение прав не выполнялись. Версии и доступные параметры обеих сторон требуют подтверждения.