Я пытаюсь выполнить несколько команд на удаленном сервере.У меня проблема в том, что после запуска команды 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
одинаковы между рабочим и нерабочим сервером
Я предполагаю, что между наборами серверов должно быть некоторое различие в конфигурации, поскольку они согласуются друг с другом, но я не могу понять, что.