Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии тоже бы восстанавливались. Такое вообще возможно?
Если нет, то как народ обходит подобную проблему?
Я слышал, что цитрикс умеет воссанавливаться в подобных случаях. Может быть на линукс сервер поставить цитрикс(он вообще есть под линух?)?
>Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть
>сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных
>каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>тоже бы восстанавливались. Такое вообще возможно?Безусловно не только возможно, но так оно в жизни и происходит. Если сессия НЕ восстанавливается - то только по причине того, что либо маленький keep-alive на сервере, либо у клиента меняется IP-адрес.
Для более подробного исследования нужно включить полную отладку демона + смотреть что происходит через tcpdump+strace>Если нет, то как народ обходит подобную проблему?
>Я слышал, что цитрикс умеет воссанавливаться в подобных случаях. Может быть на
>линукс сервер поставить цитрикс(он вообще есть под линух?)?Цитрикс-сервера? Странный вопрос. Естественно нет.
>>Хочется воспользоваться уже изобретенными велосипедами, а не изобретать свои. Задача такая: есть
>>сервер(RHEL 4.0), есть удаленные SSH-клиенты(Win32 Putty). Удаленные клиенты сидят на нестабильных
>>каналах. Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>>тоже бы восстанавливались. Такое вообще возможно?
>
>Безусловно не только возможно, но так оно в жизни и происходит. Если:) это каким таким каком?! :)
>сессия НЕ восстанавливается - то только по причине того, что либо
>маленький keep-alive на сервере, либо у клиента меняется IP-адрес.
>Для более подробного исследования нужно включить полную отладку демона + смотреть что
>происходит через tcpdump+strace
>
>>Если нет, то как народ обходит подобную проблему?никак, это должно быть продумано в интерактивном софте.
>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>
>:) это каким таким каком?! :)
>
Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии? Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с той же сетевой средой) ДО таймаута клиента или сервера - восстановится и сессия.
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.Раз здесь упоминался citrix, мне кажется, речь идет о достаточно больших таймаутах. Во всяком случае явно бОльших, чем таймаут на обрыв TCP-сессии.
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.timeout как раз и служит для того чтобы НЕ ЗАКРЫВАТЬ сессию, если же
ей кирдык, то далее только новое соединение и новая сессия.PS. Возможны вы неудачно пытались объяснить, sorry, я понял, а вот человек
могу заплутать...
>
>>>Безусловно не только возможно, но так оно в жизни и происходит. Если
>>
>>:) это каким таким каком?! :)
>>
>
>
>Хм... А что - при отрываниии клиента от сети рвутся все TCP-сессии?
>Естественно нет - они рвутся только по таймауту.. Восстановится соединение (с
>той же сетевой средой) ДО таймаута клиента или сервера - восстановится
>и сессия.
Если речь идет о винде и диалапе, то да: как только соединение разорвалось - восстановить сессии не удастся...
>
>Если речь идет о винде и диалапе, то да: как только соединение
>разорвалось - восстановить сессии не удастся...В общем случае - да, т.к. падает сетевой интерфейс и все, что было к нему привязано :)
Вероятно, можно найти обходное решение и этой проблемы. Надо думать.
>>Нужно чтобы в случае разрыва и последующего восстановления соединения SSH-сессии
>>тоже бы восстанавливались. Такое вообще возможно?
>
>Безусловно не только возможно, но так оно в жизни и происходит. Если
>сессия НЕ восстанавливается - то только по причине того, что либо
>маленький keep-alive на сервере, либо у клиента меняется IP-адрес.А какой keep-alive по умолчанию?
В конфиге прописано:
---
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
---
SSHD из OpenSSH 4.1>Для более подробного исследования нужно включить полную отладку демона + смотреть что
>происходит через tcpdump+straceЭто понятно.
>А какой keep-alive по умолчанию?
>В конфиге прописано:
>---
>#TCPKeepAlive yes
>#ClientAliveInterval 0
>#ClientAliveCountMax 3TCPKeepAlive
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 - за тестирование непосредственно сетевого соединения.
>Т.е. надо
>TCPKeepAlive no
>
>Также неплохо было бы выставить побольше keepalive в tcp/ip стэке системы до
>приемлимых для Вашей задачи величин. Ну а после этого надо игратся
>с клиентом - чтобы увеличить timeout у него.Т.е. если выставить в SSH-демоне "TCPKeepAlive no", а в TCP стеке линуха по умолчанию 7200 секунд, то все равно сессия разорвется через 2 часа неактивности? Я правильно понимаю?
>Т.е. если выставить в SSH-демоне "TCPKeepAlive no", а в TCP стеке линуха
>по умолчанию 7200 секунд, то все равно сессия разорвется через 2
>часа неактивности? Я правильно понимаю?Через 2 часа после того, как клиент отпал. Да.
screen -x screen_name || screen -S screen_name твоя_прогаman screen
>screen -x screen_name || screen -S screen_name твоя_прога
>
>man screenЭто несколько не то.
>>screen -x screen_name || screen -S screen_name твоя_прога
>>
>>man screen
>
>Это несколько не то.А чем screen не нравится? нельзя ли поконкретнее
>>>screen -x screen_name || screen -S screen_name твоя_прога
>>>
>>>man screen
>>
>>Это несколько не то.
>
>А чем screen не нравится? нельзя ли поконкретнееНепонятно как удаленные станции под виндами будут открывать новые screen-сессии и не только открывать, а в случае разрыва соединения и последующего его восстановления цепляться снова к своим сессиям.
>>>>screen -x screen_name || screen -S screen_name твоя_прога
>>>>
>>>>man screen
>>>
>>>Это несколько не то.
>>
>>А чем screen не нравится? нельзя ли поконкретнее
>
>Непонятно как удаленные станции под виндами будут открывать новые screen-сессии и не
>только открывать, а в случае разрыва соединения и последующего его восстановления
>цепляться снова к своим сессиям.
значить man screen не помог :-)тогда могу посоветовать vncserver(linux) <-> TightVNC vncviewver (windows)
ну и vnc через ssh
>>>>>screen -x screen_name || screen -S screen_name твоя_прога
>>>>>
>>>>>man screen
>>>>
>>>>Это несколько не то.
>>>
>>>А чем screen не нравится? нельзя ли поконкретнее
>>
>>Непонятно как удаленные станции под виндами будут открывать новые screen-сессии и не
>>только открывать, а в случае разрыва соединения и последующего его восстановления
>>цепляться снова к своим сессиям.
>значить man screen не помог :-)
>
>тогда могу посоветовать vncserver(linux) <-> TightVNC vncviewver (windows)
>ну и vnc через sshОк. Если не получится с таймаутами - попробую VNC.