SSH и reboot

Подключаюсь к машине, по ssh естественно, к gentoo
Делаю reboot
Получаю сообщение

Broadcast message from root (pts/0) (Wed Aug 26 14:04:27 2009):

The system is going down for reboot NOW!

и на этом собственно все - сеанс не закрывается и продолжает висеть - до самого таймаута пока гном терминал не выдержит и не отключит или пока сам его не закроешь - продолжает висеть.

Со всякими убунтами - sshd закрывает все соединения перед ребутом

Вопрос : как сделать так же ?

немного "суррогатно", но работает

сразу после reboot дать команду exit - чтобы отсоединиться от хоста до того, как он уйдёт в перезагрузку. Так ничего не "висит".

Может так попробовать? ssh

Может так попробовать?

ssh user@gentoo.host reboot

Я Gentoo & Funtoo

Есть нехорошее подозрение по

Есть нехорошее подозрение по части интерпретации alias'ов в данном случае (или прав пользователю которому разрешено запускать команду и тогда скорее вопрос правильности конфига).

:wq
--
Live free or die

/

Terrible написал(а):
Со всякими убунтами - sshd закрывает все соединения перед ребутом

Вопрос : как сделать так же ?

Во-первых, не только бубунтами;
Во-вторых, сравнивай конфиги и diff тебе в помощь.

:wq
--
Live free or die

Экспортировал sshd_config из

Экспортировал sshd_config из убунты - ничего не вышло
Скрипт /etc/init.d/ssh на stop почти идентичен (добавил как на убунте опцию --oknodo - так же не то)

думаю скорее всего - при завершении работы он (/etc/init.d/ssh stop) и должен отсылать команду на закрытие всех сеансов, но ничего похожего на это там не увидел :

# ubuntu
  stop)
        log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd"
        if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;

# gentoo
stop() {
        if [ "${RC_CMD}" = "restart" ] ; then
                checkconfig || return 1
        fi

        ebegin "Stopping ${SVCNAME}"
        start-stop-daemon --stop --exec "${SSHD_BINARY}" \
            --pidfile "${SSHD_PIDFILE}" --quiet
        eend $?
}

Terrible написал(а): и на

Terrible написал(а):
и на этом собственно все - сеанс не закрывается и продолжает висеть - до самого таймаута пока гном терминал не выдержит и не отключит или пока сам его не закроешь - продолжает висеть.

shutdown -r now приводит к тому же результату? (зависание сеанса)

что-то добрый я сегодня ....

Да, комп уходит в

Да,
комп уходит в перезагрузку - а команда остается висеть в терминале

а такой вариант прокатит?

/etc/init.d/sshd stop && reboot

что-то добрый я сегодня ....

Если

Если выполнить

/etc/init.d/sshd stop

ssh сессия не рвется - соединение остается активным и работающим, хотя после exit к серверу уже не подключится

Вот этот момент как можно понять - служба по идее должна остановится, а она работает

упустил из виду ;(

ssh запуен как демон или через initd ?

что-то добрый я сегодня ....

.

leryc написал(а):
ssh запуен как демон или через initd ?

В смысле???
openrc[2] --- это только механизм управления автоматическим запуском, и не более того.
От того, как запущен демон (автоматически или вручную посредством /etc/init.d/sshd start результат зависеть не должен).

ЗЫ: Здесь вам не тут! В смысле --- не FreeBSD, где разрешение запуска демона равноценно прописыванию его автоматического старта при загрузке.

:wq
--
Live free or die

xinet.d

имелось ввиду

что-то добрый я сегодня ....

Пошарился по имеющимся конфигам

leryc написал(а):
имелось ввиду

А возможность запуска sshd из-под xinetd [нормально] предусмотрена???

:wq
--
Live free or die

why not?

зачем лишний демон если подключка 1-2-3 в месяц ?

к тому же некоторые секьюрити-рекомендации рекомендуют юзать ssh именно через xinet.d в целях бОльшей безопасности.

сам использую демон (из-за ленности)

что-то добрый я сегодня ....

.

Terrible написал(а):
Если выполнить

/etc/init.d/sshd stop

ssh сессия не рвется - соединение остается активным и работающим, хотя после exit к серверу уже не подключится

Вот этот момент как можно понять - служба по идее должна остановится, а она работает

ИМХО это --- однозначно баг стартового скрипта.
Добро пожаловать на http://bugs.gentoo.org/

:wq
--
Live free or die

Это не баг это фича. Чтобы

Это не баг это фича. Чтобы случайно вырубив ssh не надо было ехать фиг знает куда.

/

KiberGus написал(а):
Это не баг это фича. Чтобы случайно вырубив ssh не надо было ехать фиг знает куда.

Только мне кажется, что просто так sshd нен вырубается? :)

А ещё есть мнение, что описанию данной (специфичной для стартовых скриптов Gentoo) фичи место в FAQ (хоть оно и не сильно 'F'...).

:wq
--
Live free or die

Закрыть соединение можно

Закрыть соединение можно комбинацией клавиш: [Shift] + [`] [.]

Наверное довольно-таки грубый

Наверное довольно-таки грубый способ но другого пока не нашлось
Добавил в сценарий (в конец stop'a)

killall "${SSHD_BINARY}"

грубо

проверил оба совета на своем серваке - работает нормально
примерно на минуту подвисание (пока на сервере опустятся все сервисы) и потом соединение рвется спокойно
никаких специальных настроек ни там, ни тут не делал

проверьте reboot из чистой консоли.

если эффект будет тот же - покопайтесь в логах на сервере.

у меня на одной из тестовых машинок была ситуация - сначала долго опускался squid, потом неспешно завершался почтовик, после чего подвисал alsa на несколько минут - в итоге вся перезагрузка длилась минут 10-15

ssh "опускается" одним из последних - так что вполне возможно и подвисание терминала из-за этого.

может и у вас какой сервис не может завершиться?

что-то добрый я сегодня ....

я обычно делаю

я обычно делаю

server~#reboot && exit

и не задумывался над этим.
но, если не указать то да, факт, висит до того как выйдет таймаут.

Было бы нелишним увидеть

Было бы нелишним увидеть конфигурационные файлы сервера и клиента, а также полностью опции команды ssh при подключении.

Я Gentoo & Funtoo

наверное можно поступить

наверное можно поступить проще, навернека в debain-е есть что-то вроде srpm RedHat-вских. Взять и посмотреть что-там отличного от оригинала.

Хз, где и как , но в родной

Хз, где и как , но в родной для OpenSSH системе (OpenBSD) соединение рвётся __сразу__ после команды reboot/poweroff и не зависит от shell`a, (по крайней мере начиная с 3.2)
В Гентоо сколько помню,столько и не работала фича.
Особенно не мешало, я и не разбирался.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Во превых надо разобраться

Во превых надо разобраться кто косячит. Ежели сервер ложится (проверить можно ломанувшись на сервак повторно из другой консоли), то ковырять настройку клиента.
Сам конфиг клиента лежит в /etc/ssh/ssh_config. К нему толковый man sshd_config. Судя по всему крутить надо параметр ConnectTimeout

Аналогичная ситуация, но в

Аналогичная ситуация, но в моем случае я даже немного рад этому поведению.
# ps ax|grep ssh
941 ? Ss 0:00 /usr/sbin/sshd
7775 ? Ss 0:00 sshd: user@pts/0
#/etc/init.d/sshd stop

и не вылетаешь из удаленной консоли и можешь в консоли продолжать работу.

# ps ax|grep ssh
7775 ? Ss 0:00 sshd: user@pts/0

Ещё остается шанс это поправить.

я лично после команды reboot

я лично после команды reboot жму Ctrl+D - в этой комбинации моё счастье.

Покурив конфиги и всю эту

Покурив конфиги и всю эту ситуацию - думаю могу с уверенностью сказать что на закрытие сессии shh при остановки системы
т.е. мы получаем сообщение типа:

Connection to 192.168.0.80 closed by remote host.

не имеет отношение ни sshd_conf ни скрипт init.d/sshd

В системе после остановки демона продолжают висеть его поражденные процессы sshd (подключенные сеансы) которые ни как не реагируют на то что система сечас отключится и держатся до последнего - ну уж точно не закрываются раньше отключения сетевого интерфейса.

Со стороны клиента это выглядит так - как буд-то удаленный комп просто вырубили из сети

Внезапно. Так и происходит.

Внезапно. Так и происходит. /etc/init.d/sshd stop не убивает все сессии, по причинам описанным ранее, а именно, чтобы вы случайно не умудрились отрезать себя от сервера на другой стороне планеты =). Поэтому сессия остается рабочей ровно до того момента, пока не будут положены сетевые интерфейсы. Как только хост вернеться из ребута, ожидающее соединение, постоянно пытающееся что-то получить от него, начнет радостно тыкаться в 22 порт с неизвестной сессией TCP, а именно какбы со статусом ESTABLISHED. А такого соединения в таблице установленных нету, и ядро, еще даже до ssh отпинывает запрос, что и приводит к данному сообщению.

Собственно я не вижу тут проблемы вообще. Как форсировать закрытие ssh сессии было уже сказано ранее.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".