SSH не запускает команды после sudo - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь выполнить несколько команд на удаленном сервере.У меня проблема в том, что после запуска команды sudo соединение ssh автоматически закрывается.

Основной тест, который не проходит:

ssh -i "/path/to/key/id_rsa" user@server << EOF
sudo ls -la "/etc/redhat-release"
cat "/etc/redhat-release"
EOF

Возвращает только ls результат

-rw-r--r-- 1 root root 55 Jan 29  2013 /etc/redhat-release

Хотя, если я поместу обе команды в одну строку, т.е.

ssh -i "/path/to/key/id_rsa" user@server << EOF
sudo ls -la "/etc/redhat-release"; cat "/etc/redhat-release"
EOF

, я получу результат обеих команд

-rw-r--r-- 1 root root 55 Jan 29  2013 /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)

Теперь самое странное:

  • основной тест работает на другом сервере с идентичной конфигурацией.Есть наборы серверов, где это работает, и другие наборы, где это не работает.

  • если я удалю sudo из теста, я получу результат от обеих команд, так что это не ограничение ssh

например

ssh -i "/path/to/key/id_rsa" user@server << EOF
ls -la "/etc/redhat-release"
cat "/etc/redhat-release"
EOF

-rw-r--r-- 1 root root 55 Jan 29  2013 /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)

Дополнительная информация:

  • Обе команды имеют флаг NOPASSWD в файле sudoers, поэтому пароль не запрашивается.

  • requiretty закомментировано.

  • ssh версия: OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

  • SELinuxотключено

  • опция ssh -vvv не показывает существенной разницы в журналах между рабочим и нерабочим сервером

  • sshd_config одинаковы между рабочим и нерабочим сервером

Я предполагаю, что между наборами серверов должно быть некоторое различие в конфигурации, поскольку они согласуются друг с другом, но я не могу понять, что.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Проверьте вашу sudo версию (sudo -V).

Оказывается, один сервер работал Sudo version 1.8.6p3, в то время как другой работал на Sudo version 1.8.21p2, и он был запущен с ошибкой, которая была исправлена ​​в sudo 1.8.20 :

Исправлена ​​ошибка, из-за которой sudo использовало бы стандартный ввод, если он не был подключен к tty, даже если log_input не включен в sudoers. Ошибка # 786 .

Обновление версии sudo устранило проблему.

0 голосов
/ 05 июня 2019

Один из возможных обходных путей:

ssh -i "/path/to/key/id_rsa" user@server sudo bash << EOF
ls -la "/etc/redhat-release"
cat "/etc/redhat-release"
EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...