URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 61769
[ Назад ]

Исходное сообщение
"SSH и разрыв соединения"

Отправлено San , 14-Ноя-05 13:58 
Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии тоже бы восстанавливались. Такое вообще возможно?
Если нет, то как народ обходит подобную проблему?
Я слышал, что цитрикс умеет воссанавливаться в подобных случаях. Может быть на линукс сервер поставить цитрикс(он вообще есть под линух?)?

Содержание

Сообщения в этом обсуждении
"SSH и разрыв соединения"
Отправлено bladerunner , 14-Ноя-05 16:07 
>Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть
>сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных
>каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>тоже бы восстанавливались. Такое вообще возможно?

Безусловно не только возможно, но так оно в жизни и происходит. Если сессия НЕ восстанавливается - то только по причине того, что либо маленький keep-alive на сервере, либо у клиента меняется IP-адрес.
Для более подробного исследования нужно включить полную отладку демона + смотреть что происходит через tcpdump+strace

>Если нет, то как народ обходит подобную проблему?
>Я слышал, что цитрикс умеет воссанавливаться в подобных случаях. Может быть на
>линукс сервер поставить цитрикс(он вообще есть под линух?)?

Цитрикс-сервера? Странный вопрос. Естественно нет.


"SSH и разрыв соединения"
Отправлено lavr , 14-Ноя-05 16:18 
>>Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть
>>сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных
>>каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>>тоже бы восстанавливались. Такое вообще возможно?
>
>Безусловно не только возможно, но так оно в жизни и происходит. Если

:) это каким таким каком?! :)

>сессия НЕ восстанавливается - то только по причине того, что либо
>маленький keep-alive на сервере, либо у клиента меняется IP-адрес.
>Для более подробного исследования нужно включить полную отладку демона + смотреть что
>происходит через tcpdump+strace
>
>>Если нет, то как народ обходит подобную проблему?

никак, это должно быть продумано в интерактивном софте.


"SSH и разрыв соединения"
Отправлено bladerunner , 14-Ноя-05 17:12 

>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>
>:) это каким таким каком?! :)
>


Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии? Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с той же сетевой средой) ДО таймаута клиента или сервера - восстановится и сессия.


"SSH и разрыв соединения"
Отправлено mezantrop , 14-Ноя-05 17:18 
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.

Раз здесь упоминался citrix, мне кажется, речь идет о достаточно больших таймаутах. Во всяком случае явно бОльших, чем таймаут на обрыв TCP-сессии.


"SSH и разрыв соединения"
Отправлено lavr , 14-Ноя-05 17:20 
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.

timeout как раз и служит для того чтобы НЕ ЗАКРЫВАТЬ сессию, если же
ей кирдык, то далее только новое соединение и новая сессия.

PS. Возможны вы неудачно пытались объяснить, sorry, я понял, а вот человек
могу заплутать...


"SSH и разрыв соединения"
Отправлено John , 14-Ноя-05 21:23 
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.


Если речь идет о винде и диалапе, то да: как только соединение разорвалось - восстановить сессии не удастся...


"SSH и разрыв соединения"
Отправлено bladerunner , 15-Ноя-05 01:42 

>
>Если речь идет о винде и диалапе, то да: как только соединение
>разорвалось - восстановить сессии не удастся...

В общем случае - да, т.к. падает сетевой интерфейс и все, что было к нему привязано :)
Вероятно, можно найти обходное решение и этой проблемы. Надо думать.


"SSH и разрыв соединения"
Отправлено San , 14-Ноя-05 17:23 
>>Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>>тоже бы восстанавливались. Такое вообще возможно?
>
>Безусловно не только возможно, но так оно в жизни и происходит. Если
>сессия НЕ восстанавливается - то только по причине того, что либо
>маленький keep-alive на сервере, либо у клиента меняется IP-адрес.

А какой keep-alive по умолчанию?
В конфиге прописано:
---
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
---
SSHD из OpenSSH 4.1

>Для более подробного исследования нужно включить полную отладку демона + смотреть что
>происходит через tcpdump+strace

Это понятно.


"SSH и разрыв соединения"
Отправлено bladerunner , 14-Ноя-05 17:41 
>А какой keep-alive по умолчанию?
>В конфиге прописано:
>---
>#TCPKeepAlive yes
>#ClientAliveInterval 0
>#ClientAliveCountMax 3

    TCPKeepAlive
             Specifies whether the system should send TCP keepalive messages to the other side.  If they are sent, death
             of the connection or crash of one of the machines will be properly noticed.  However, this means that con-
             nections will die if the route is down temporarily, and some people find it annoying.  On the other hand,
             if TCP keepalives are not sent, sessions may hang indefinitely on the server, leaving ``ghost'' users and
             consuming server resources.

             The default is ``yes'' (to send TCP keepalive messages), and the server will notice if the network goes
             down or the client host crashes.  This avoids infinitely hanging sessions.

             To disable TCP keepalive messages, the value should be set to ``no''.

Т.е. надо
TCPKeepAlive no

Также неплохо было бы выставить побольше keepalive в tcp/ip стэке системы до приемлимых для Вашей задачи величин. Ну а после этого надо игратся с клиентом - чтобы увеличить timeout у него.


Как я понимаю - ClientAliveInterval - это опция, отвечающая за тестирование текущей работоспособности клиентского ПО, а TCPKeepAlive - за тестирование непосредственно сетевого соединения.



"SSH и разрыв соединения"
Отправлено San , 14-Ноя-05 20:26 
>Т.е. надо
>TCPKeepAlive no
>
>Также неплохо было бы выставить побольше keepalive в tcp/ip стэке системы до
>приемлимых для Вашей задачи величин. Ну а после этого надо игратся
>с клиентом - чтобы увеличить timeout у него.

Т.е. если выставить в SSH-демоне "TCPKeepAlive no", а в TCP стеке линуха по умолчанию 7200 секунд, то все равно сессия разорвется через 2 часа неактивности? Я правильно понимаю?


"SSH и разрыв соединения"
Отправлено bladerunner , 15-Ноя-05 01:43 

>Т.е. если выставить в SSH-демоне "TCPKeepAlive no", а в TCP стеке линуха
>по умолчанию 7200 секунд, то все равно сессия разорвется через 2
>часа неактивности? Я правильно понимаю?

Через 2 часа после того, как клиент отпал. Да.


"SSH и разрыв соединения"
Отправлено nrvalex , 14-Ноя-05 17:11 
screen -x screen_name || screen -S screen_name  твоя_прога

man screen


"SSH и разрыв соединения"
Отправлено San , 14-Ноя-05 17:25 
>screen -x screen_name || screen -S screen_name  твоя_прога
>
>man screen

Это несколько не то.


"SSH и разрыв соединения"
Отправлено favourite , 15-Ноя-05 06:09 
>>screen -x screen_name || screen -S screen_name  твоя_прога
>>
>>man screen
>
>Это несколько не то.

А чем screen не нравится? нельзя ли поконкретнее


"SSH и разрыв соединения"
Отправлено San , 15-Ноя-05 20:21 
>>>screen -x screen_name || screen -S screen_name  твоя_прога
>>>
>>>man screen
>>
>>Это несколько не то.
>
>А чем screen не нравится? нельзя ли поконкретнее

Непонятно как удаленные станции под виндами будут открывать новые screen-сессии и не только открывать, а в случае разрыва соединения и последующего его восстановления цепляться снова к своим сессиям.


"SSH и разрыв соединения"
Отправлено Doka , 16-Ноя-05 21:37 
>>>>screen -x screen_name || screen -S screen_name  твоя_прога
>>>>
>>>>man screen
>>>
>>>Это несколько не то.
>>
>>А чем screen не нравится? нельзя ли поконкретнее
>
>Непонятно как удаленные станции под виндами будут открывать новые screen-сессии и не
>только открывать, а в случае разрыва соединения и последующего его восстановления
>цепляться снова к своим сессиям.
значить man screen не помог :-)

тогда могу посоветовать vncserver(linux) <-> TightVNC vncviewver (windows)
ну и vnc через ssh


"SSH и разрыв соединения"
Отправлено San , 17-Ноя-05 14:54 
>>>>>screen -x screen_name || screen -S screen_name  твоя_прога
>>>>>
>>>>>man screen
>>>>
>>>>Это несколько не то.
>>>
>>>А чем screen не нравится? нельзя ли поконкретнее
>>
>>Непонятно как удаленные станции под виндами будут открывать новые screen-сессии и не
>>только открывать, а в случае разрыва соединения и последующего его восстановления
>>цепляться снова к своим сессиям.
>значить man screen не помог :-)
>
>тогда могу посоветовать vncserver(linux) <-> TightVNC vncviewver (windows)
>ну и vnc через ssh

Ок. Если не получится с таймаутами - попробую VNC.