Вопрос: Как подключиться к отключенной сессии ssh


Есть ли способ подключения к сеансу ssh, который был отключен? У нас возникают проблемы с нашим сетевым подключением к удаленному сайту, над которым мы работаем отдельно; однако, в среднем мы испытываем большое количество отключений из-за потерянных пакетов при подключении к серверам в удаленном месте. Много раз сеанс остается активным некоторое время, а иногда бывает посредине какого-либо действия (редактирование файлов, запуск некоторых процессов и т. Д.), Которые мне нужно вернуться, а не перезапустить, если это возможно.


133
2018-06-04 13:04


Источник


Не могу поверить, что никто не упомянул mosh.mit.edu - jwbensley
@javano: Я никогда не слышал об этом. Добавьте это как ответ! - kbyrd
@kbyrd Сделали;) - jwbensley
аналогичный вопрос был задан в unix.stackexchange.com/questions/105001/... с некоторыми подсказками о том, как работать с отключением в первую очередь ... - anarcat


Ответы:


ОБНОВЛЕНИЕ: для получения фактического ответа см. Ответ zero_r ниже

Это не ответ, а обходной путь. использование экран,

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

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


124
2018-06-04 13:08



Или используйте tmux - «более холодный» экран, я использовал оба и предпочитаю tmux, потому что вы можете легко разделить этот термин. - John Hunt
Я был рад найти screen был уже установлен на моем Ubuntu 12.x, поэтому, если вы не уверены, просто попробуйте эту команду, он повторно подключился и возобновил делать-релиз-обновления процесс: экран sudo -D -r - bjm88
@ Bjm88, sudo следует использовать, только если начальный сеанс сеанса был инициирован с помощью sudo. В противном случае он вернется, как будто сеанс сеанса не существует: There is no screen to be detached - Noam Manos


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

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


114
2018-06-04 13:08



Пока вы, кажется, единственный, кто действительно отвечает на этот вопрос, вместо того, чтобы предлагать экран в качестве обходного пути. - kbyrd
Хороший звонок. Мы нашли этот метод особенно полезным при прохождении брандмауэров ASIS / PIX cisco, которые по умолчанию любят тайм-аут tcp-соединений. - Mike Pountney
Возможно, это неправильное место, чтобы спросить, но возможно ли, чтобы плакат переключил ответы? Мы должны ответить «screen» (мой не самый лучший, мне нравится Майк Паунтни, но я получил репутацию) с этой информацией. - kbyrd
Будет ли это работать при подключении через VPN-соединение Cisco, а VPN-соединение будет потеряно и восстановлено? - Brent
для меня экран работает отлично, я могу подключиться к экранированной задаче и окружению для работы - infografik


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

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

Основы:

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

    $ screen
    
  • Отключите сеанс экрана: CTRL-A, d

  • Повторно подключитесь к сеансу экрана после повторного входа снова:

    $ screen -d -r
    
  • Откройте другое окно «окно»: CTRL-A, с

  • Пройдите через открытые оконные окна: CTRL-A, пространство

Там есть много из крутых вещей, которые вы можете сделать с помощью экрана. Я использую его более 10 лет и все еще обнаруживаю новые функции. Это моя любимая утилита Unix.


58
2018-06-04 13:19



Да, это гораздо лучший ответ, чем мой. - kbyrd
Могу ли я подключиться к отключенной сессии ssh, если я перезагружу свой компьютер, где работает экран? - BarathVutukuri


Не могу поверить, что никто не упомянул МОСХ;

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

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

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

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

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

Особенности с веб-сайта:

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

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

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

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

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

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

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


40
2017-11-24 13:01



Мош не является оболочкой ssh ​​- это другой протокол, почти полностью не связанный с ssh (он использует только ssh для входа в систему). - jch
+1 Очень верно, моя ошибка. - jwbensley
Как насчет безопасности, человек в середине? шифрование? обмен ключами? - Nasir Iqbal


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


18
2018-06-06 09:11



вне конфигурируемого keep-alive, он по своей сути не позволяет вам повторно подключаться к сеансу (что ищет OP). но autossh может быть действительно полезен для приложений, которым требуются туннели ssh, сопоставление портов и т. д. - ives
да autossh + screen будет сладким пятном. у autossh есть rscreen для этого. - hayalci
Автош лучше, чем мош. Я использовал оба. - Sridhar-Sarnobat
Вот сообщение в блоге Джесси Китинга об использовании autossh с экраном, - sampablokuper


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

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

Для начала, если вы отключитесь, вы можете использовать

screen -ls

для просмотра ваших сеансов и

screen -r ${session} 

для повторного подключения к отключенному.


9
2018-06-04 13:06





tmux

Это классика. Используйте его всякий раз, когда вы рискуете потерять соединение с терминалом.

$ tmux
$ sh do_something_that_takes_forever

!! Connection fails so you reconnect once you notice

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0

Просто так, вы снова в действии.


9
2018-04-06 01:24



Благодаря тонну! Я искал, как это сделать с помощью tmux, так как это похоже на то, что большинство людей считают лучшим вариантом. - CoolOppo


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

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

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


3
2018-06-04 13:47



Хороший сценарий в этой ссылке, спасибо! - palehorse


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


2
2018-03-23 11:44





Вот еще одно неэкранированное решение.

Патч-шпатель позволяет вам сделать именно это, он имеет повторное подключение к опции разъединения, которая не находится в обычном или замазке

https://puttytray.goeswhere.com/

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


2
2018-01-20 10:08



Эхх. Приходит ли он с помощью кейлоггера и автоматической утилиты утилизации ppk, случайно? - Deer Hunter
Я предполагаю, что вы спрашиваете, не так ли это, крадет ваши данные, это полностью открытый исходный код, исходный код доступен на github, если вы хотите посмотреть его github.com/FauxFaux/PuTTYTray есть немало участников :) - munkiepus
отличные ура :) - munkiepus