Выполнить несколько команд, используя sudo поверх ssh - PullRequest
0 голосов
/ 23 апреля 2020

Я использую систему Redhat 7.8 и пытаюсь запустить аналогичную команду из удаленного планировщика Jenkins. Команда выглядит следующим образом: ssh userA@host sudo -u userB -- sh -c 'whoami; whoami' Вывод

userB

userA

Я ожидаю вывод как:

userB

userB

Не удалось это исправить. Пробные опции sudo, такие как -i, -s и -- sh -c

Файл sudoer имеет следующую конфигурацию:

userA ALL=(userB) NOPASSWD: ALL

1 Ответ

0 голосов
/ 23 апреля 2020

Проблема заключается в том, что одинарные кавычки удаляются как часть ssh построения единой команды для передачи удаленной оболочке, поэтому вы действительно запускаете

sudo -u userB -- sh -c whoami; whoami

В общем, вы всегда хотите передайте один строковый аргумент ssh, вместо того, чтобы объединить несколько аргументов в одну команду.

ssh userA@host "sudo -u userB -- sh -c 'whoami; whoami'"
...