У нас есть настройка Реализация 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?