У меня есть два сервера с одинаковой версией RedHat 6.4, однако один из них ведет себя по-разному, когда я запускаю удаленный sudo
команды через SSH на нем. На server1, соединение автоматически закрывается после успешный sudo
команда, но на server3, соединение остается открытым и можно запускать другие команды.
Обратите внимание, что для этих тестов sudo
пользователь имел NOPASSWD
флаг, поэтому подсказки не запрашиваются. Насколько мне известно, все конфигурации на этих серверах одинаковы (они были клонированы).
Я тестировал это:
ssh -vvv user@server1 << EOF
sudo ls -l /home/
ls -l /home/
pwd
EOF
Если я запускаю это на server1, я получаю список одного файла.
debug3: Wrote 32 bytes for a total of 1621
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
Работая без команды sudo на том же сервере, я получаю список из двух файлов и результат pwd
ssh -vvv user@server1 << EOF
ls -l /home/
ls -l /home/
pwd
EOF
Результат:
debug3: Wrote 32 bytes for a total of 1605
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
/home/user
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
Однако, запустив сценарий с командой sudo на server3, я получаю результат всех трех команд, как в предыдущем тесте. Я сравнил вывод журналов ssh -vvv с обоих серверов (1 и 3), и все кажется одинаковым, за исключением строки отладки в другом порядке, когда соединение закрыто (см. Строку client_input ...).
server1 (то же самое с или без sudo
)
[command results]
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug2: channel 0: rcvd close
server3
[command results]
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
Я хотел бы знать, как исправить server1, чтобы соединение не закрывалось автоматически, чтобы мой скрипт мог полностью выполняться при включении sudo
команды.
Некоторые варианты я уже проверил:
passwd
файл правильно настроен с /bin/bash
оболочка sudoers
и sshd_config
конфигурация одинакова для двух серверовЕдинственное различие между серверами, которые я вижу, заключается в том, что ошибочный server1 - это серверы более старого поколения, это ProLiant DL380 G7 по сравнению с G8 для server3. Другие серверы, которые я пробовал и которые работают, тоже G8 (у меня есть только один G7, который я могу попробовать). Я не понимаю, как оборудование может вызывать такие проблемы.