Я настроил выделенную пару ключей SSH для принудительной установки определенной команды на удаленном сервере. Я добавил открытый ключ в файл author_keys удаленного сервера вместе с параметром команды, определяющим команду, которая будет выполняться при использовании этого ключа. Эта команда является сценарием оболочки, для которого требуется один аргумент командной строки, который я ожидаю передать в переменную среды $SSH_ORIGINAL_COMMAND .
Когда я выполняю команду ssh с клиента и задаю использование этого конкретного ключа, вот так:
ssh -i id_rsa_mykey -o User=abc -o HostName=myhost xxx
Удаленный сценарий выполняется должным образом и передается xxx в переменной SSH_ORIGINAL_COMMAND .
Если я пытаюсь передать удаленной команде адрес электронной почты, однако удаленный sshd интерпретирует значение как user@host и, по-видимому, пытается выполнить аутентификацию на части до символа @ а удаленная команда никогда не выполняется. /var/log/auth.log на удаленном сервере имеет ошибку:
Invalid user xxx from 192.168.0.1
Как я могу избежать символа @ или иначе не заставить sshd оценить значение как user@host и вместо этого передать значение как есть удаленной команде?
Я пытался как пытаться использовать обратную косую черту, избегая символа @ так и используя -- перед аргументом, но sshd не поддерживает соглашение об окончании аргументов.
- Клиентский компьютер работает под управлением Ubuntu с версией
sshOpenSSH_7.2p2. - На сервере установлена Debian с версией
sshdOpenSSH_6.7p1
