Назад | Перейти на главную страницу

Соединение SSH закрывается автоматически после команды sudo

У меня есть два сервера с одинаковой версией 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 команды.

Некоторые варианты я уже проверил:

Единственное различие между серверами, которые я вижу, заключается в том, что ошибочный server1 - это серверы более старого поколения, это ProLiant DL380 G7 по сравнению с G8 для server3. Другие серверы, которые я пробовал и которые работают, тоже G8 (у меня есть только один G7, который я могу попробовать). Я не понимаю, как оборудование может вызывать такие проблемы.