Рейтинг:0

С сервером Microsoft OpenSSH для Windows, как мы заключаем в кавычки символы пробела в принудительных командах в файле author_keys?

флаг ve

У нас есть настройка Реализация Microsoft сервера OpenSSH на сервере Windows 2019 (v1809) и активировали аутентификацию на основе открытых ключей. Мы хотели бы развернуть принудительные команды и борются с пробелы в пути таких команд.

Минимальный пример:

Пользователь пользователь1 имеет следующее авторизованные_ключи файл:

command="C:\Program Files\SomePath\SomeProgram.exe" ssh-ed25519 AAAAC3N...

Когда мы пытаемся ssh в эту машину как этот пользователь, происходит следующее:

$ ssh -i <user1_key_id> user1@server.example.com

«C:\Program» не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.
Соединение с server.example.com закрыто.

(Обратите внимание, что у нас работает агент SSH, поэтому в приведенном выше фрагменте сеанса терминала нет запроса фразы-пароля.)

ИМХО, совершенно ясно, что проблема связана с пробелом в пути к программе, которую нужно выполнить.Однако мы не уверены, почему двойные кавычки вокруг команды в авторизованные_ключи файл не предотвращает проблему. Мы попытались добавить еще пару двойных кавычек, используя хорошо известные методы экранирования:

command="\"C:\Program Files\SomePath\SomeProgram.exe\"" ...

command="^"C:\Program Files\SomePath\SomeProgram.exe^"" ...
command="""C:\Program Files\SomePath\SomeProgram.exe""" ...

Первый приводит к той же ошибке, что и описанная выше. Второй и третий приводят к другому сообщению об ошибке:

user1@server.example.com: Отказано в доступе (открытый ключ).

Теперь мы застряли и у нас есть следующий вопрос:

Как нам нужно написать команду выше в авторизованный_ключ файлы для сервера Microsoft OpenSSH для Windows?

Рейтинг:1
флаг cn

Выполняемая команда — это целая строка после прозвища «command=».

Кавычки необходимы для защиты пробелов в пути к исполняемому файлу на целевом сервере.
Кавычки в файле author_keys нужно экранировать с помощью обратная косая черта:

Итак, это должно выглядеть примерно так:

command=\"C:\Program Files\SomePath\SomeProgram.exe\" ssh-ed25519 AAAAC3N...
Binarus avatar
флаг ve
Большое спасибо и +1. Однако это приводит к ошибке «Отказано в доступе», описанной в моем исходном посте...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.