Я настроил выделенную пару ключей 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 с версией
ssh
OpenSSH_7.2p2. - На сервере установлена Debian с версией
sshd
OpenSSH_6.7p1