Как снова соединиться с разъединенной ssh сессией

Предоставление клиентского доступа к их собственному набору походит на фундаментальное 'право'. Безопасность Колорадо должна быть соблюдающей и структурировала достаточно, что доступ стойки стойкой клиентами безопасен.

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

160
задан 4 June 2009 в 17:31
10 ответов

ОБНОВЛЕНИЕ: Поскольку фактический ответ видит ответ zero_r ниже

Это не ответ, а обходное решение. Экран Use.

Когда Вы сначала входите в систему, выполняете экран. Вы получаете другую оболочку, команды выполнения в этом. Если Вы разъединяетесь, экранный процесс поддерживает терминал так, чтобы Ваша оболочка и процессы, которые это выполняет, не падали. Когда Вы повторно подключаете, выполняете 'экран-r' для возобновления.

Существует набор больше к конфигурированию и использованию экрана, но вышеупомянутое должно обходное решение Ваша проблема.

138
ответ дан 28 November 2019 в 19:17

Иногда я забывал выполнять экран также и потерю моей незаконченной работы. В этом случае, хотя мы не можем повторно прикрепить к поврежденной сессии SSH, повторно породив под управлением программу к новому терминалу и возобновив то, что Вы делали, все еще возможно благодаря reptyr.

, После того, как случайно разъединено от сессии SSH, первая вещь сначала состоит в том, чтобы работать screen, чтобы соединение не повреждается снова. Затем на новой сессии, выполненной ps aux | grep {The process to be resumed} для получения PID. С PID Вы могли попробовать reptyr {PID} или reptyr -T {PID} (если существуют подпроцессы) продолжать работу.

1
ответ дан 28 November 2019 в 19:17

Попытайтесь установить ClientAliveInterval (например, 60) и TCPKeepAlive (да или не) к соответствующим значениям на серверной стороне sshd.conf.

Это должно поддержать Вашу сессию, даже если соединение теряется в течение многих минут.

131
ответ дан 28 November 2019 в 19:17
  • 1
    До сих пор Вы, кажется, единственный, на самом деле отвечающий на вопрос вместо того, чтобы предложить экран в качестве обходного решения. –  kbyrd 4 June 2009 в 16:20
  • 2
    Хороший вызов. We' ve нашел этот метод особенно полезным при пересечении Cisco брандмауэры ASA/ящика для пробной монеты, который любовью по умолчанию для таймаута соединений TCP. –  Mike Pountney 4 June 2009 в 16:21
  • 3
    Возможно, этот isn' t правильное место для выяснения но для плаката действительно ли возможно переключить ответы? Мы должны ' screen' ответ (mine' s не лучшее, мне нравится Mike Pountney' s, но я получил представителя) в с этой информацией. –  kbyrd 4 June 2009 в 16:27
  • 4
    Это будет работать при соединении по соединению VPN Cisco, и соединение VPN потеряно и восстановлено? –  Brent 4 June 2009 в 17:26

Как упомянуто выше, Экран GNU является способом пойти. Это позволит Вам иметь 'экранную сессию' на удаленном поле, что можно выполнить несколько команд в через несколько 'экранных окон'. Это просто отсоединится, если Ваше родительское соединение SSH умрет, поддерживая все подпроцессы в рабочем состоянии в нем живой и здоровый.

'man screen'Ваш друг, как обычно, и пакет ОС нужно назвать'screen'если это не установлено по умолчанию.

Основы:

  • Запустите экранную сессию (на Вашем удаленном хосте):

    $ screen
    
  • Разъединитесь от своей экранной сессии: CTRL-A, d

  • Снова соединитесь со своей экранной сессией после вхождения в снова:

    $ screen -d -r
    
  • Откройте другой экран 'окно': CTRL-A, c

  • Цикл через Вас открывает экранные окна: CTRL-A, пространство

Существует много интересного материала, который можно сделать с Экраном. Я использовал его больше 10 лет, и все еще узнаю новые возможности. Это - моя любимая утилита Unix.

65
ответ дан 28 November 2019 в 19:17
  • 1
    Да, это - намного лучший ответ, чем мой. –  kbyrd 4 June 2009 в 16:20

autossh следит за Вашим соединением и если это понижается, это снова соединяется. Это более надежно, чем сообщения проверки активности. Если Вы соединитесь с экранной сессией, то Вы продолжите прямо от того, где Вы разъединились (см. rscreen это идет с autossh),

20
ответ дан 28 November 2019 в 19:17

Я установил бы и экран "Пуск" для решения проблемы. Экран позволит Вам снова соединиться с предыдущей экранной сессией.

Кроме этого, экран также позволяет нам, Вы действительно охлаждаетесь, вещам нравится, разделяет Ваш экран, просматривают консоль и т.д. Можно найти больше информации здесь и здесь.

Для начала, если Вы разъединяетесь, можно использовать

screen -ls

просмотреть Ваши сессии и

screen -r ${session} 

снова соединяться с разъединенным.

10
ответ дан 28 November 2019 в 19:17

Как другие указали, экран обычно является лучшим решением для этого, и это добавляет хост других полезных функций также.

Можно установить профиль на удаленной машине, чтобы автоматически запуститься и/или снова соединиться для экранирования на входе в систему, который сохраняет Вас забывающий к экрану "Пуск" одно время, Вам нужен он, потому что Вы переносите отбрасывание соединения.

См. http://tlug.dnho.net/?q=node/239 (или поисковый Google для многих других примеров dones немного отличающиеся пути).

4
ответ дан 28 November 2019 в 19:17

В то время как экран сохранит Вашу сессию оболочки открытой на удаленном сервере, если Ваша ssh сессия отбросит, то это ничего не сделает о проблеме отбрасываемых соединений SSH. Как zero_r предполагает, попытайтесь настроить свое соединение SSH с содержанием alives и долгими тайм-аутами.

Я предлагаю, чтобы Вы разыскали причину потерянных пакетов, вызывающих проблемы, и зафиксировали это вместо того, чтобы работать вокруг этого.

2
ответ дан 28 November 2019 в 19:17
  • 1
    Спасибо за предложение. Мы работаем над разыскиванием корневой проблемы потери пакетов, it' s просто требующий времени для понимания это (очень хитрый, этот!). Это действительно - обходное решение в течение этого периода проблемы. Каждый никогда не знает, когда что-то вызовет выделенное соединение. –  palehorse 4 June 2009 в 16:40
  • 2
    Это генерирует много шума, но можно попытаться выполнить ssh через strace и видеть то, что это выполнение/отчеты, когда соединение SSH отбрасывает. Это могло бы просто сообщить, что Вы уже знаете, но кто знает... –  David 4 June 2009 в 18:42

более современная альтернатива screen, увы, недоступная для некоторых типов "виртуализации" (например, в cygwin вы можете иметь "screen", но не "tmux" из-за того, как он разработан) , но везде, где у вас есть возможность установить tmux, я настоятельно рекомендую использовать этот единственный экран.

3
ответ дан 28 November 2019 в 19:17

Я не могу поверить, что никто не упомянул MOSH ;

Mosh - это отдельный протокол, который может подключаться к процессу входа в SSH, он поддерживает ваш сеанс после дней отключения, смены IP, больших задержек и так далее. Это объяснено на домашней странице лучше, чем я могу объяснить, поэтому я скопировал описание ниже. Мой опыт и советы таковы, что я использую его на своем мобильном телефоне Android, это спасает жизнь во время путешествий и использования SSH. То же самое и с моим ноутбуком, когда он привязан к мобильному телефону, например, в поезде. Я рекомендую скомпилировать из исходников, чтобы получить последнюю версию, версия репо для меня внутри Ubuntu имеет несколько недостатков, которые исправлены в последней версии (на момент написания).

Mosh (мобильная оболочка)

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

Mosh - это замена SSH. Он более надежный и отзывчивый, особенно через Wi-Fi, сотовую связь и междугородние соединения.

Mosh - бесплатное программное обеспечение, доступное для GNU / Linux, FreeBSD, Solaris, Mac OS X и Android.

Возможности с веб-сайта:

  • Изменить IP. Оставайтесь на связи : Мош автоматически перемещается при движении между подключениями к Интернету. Используйте Wi-Fi в поезде, Ethernet в отель и LTE на пляже: вы останетесь в системе. Большинство сетей программы теряют соединение после роуминга, включая SSH и Интернет такие приложения, как Gmail. Мош другой.

  • Делает для сладких снов : С Mosh вы можете перевести свой ноутбук в режим сна и разбудить его позже, сохраняя соединение целое. Если ваше интернет-соединение разорвется, Мош предупредит вас, но соединение возобновляется, когда восстанавливается сетевая служба.

  • Избавьтесь от задержки сети : SSH ожидает ответа от сервера, прежде чем показать вам ваш ввод. Это может сделать паршивый пользовательский интерфейс. Мош отличается: он мгновенно реагирует на набор текста, удаление и редактирование строки. Он делает это адаптивно и работает даже в полноэкранном режиме. такие программы, как emacs и vim. При плохом соединении невыполненные прогнозы подчеркнуты чтобы вас не обманули.

  • Никакого привилегированного кода. Нет демона : Вам не нужно быть суперпользователем, чтобы установить или запустить Mosh. Клиент и сервер исполняемые файлы запускаются обычным пользователем и действуют только в течение всего срока действия соединения.

  • Тот же метод входа в систему : Mosh не прослушивает сетевые порты и не аутентифицирует пользователей. Клиент mosh входит в систему сервер через SSH, и пользователи представляют те же учетные данные (например, пароль, открытый ключ) как прежде. Затем Мош запускает мош-сервер удаленно и подключается к нему по UDP.

  • Работает внутри вашего терминала, но лучше : Mosh - это программа командной строки, такая как ssh. Вы можете использовать его внутри xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen или tmux. Но мош был разработан с нуля и поддерживает только один набор символов: UTF-8. Исправлены ошибки Unicode в других терминалах и в SSH.

  • Control-C отлично работает : В отличие от SSH, протокол mosh на основе UDP аккуратно обрабатывает потерю пакетов и устанавливает фрейм скорость зависит от условий сети. Мош не заполняет сетевые буферы, поэтому Control-C
    всегда работает, чтобы остановить неконтролируемый процесс.

46
ответ дан 28 November 2019 в 19:17

Теги

Похожие вопросы