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

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

131 голос | спросил palehorse 4 J0000006Europe/Moscow 2009, 17:04:00

11 ответов


124

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

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

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

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

ответил kbyrd 4 J0000006Europe/Moscow 2009, 17:08:27
113

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

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

ответил zero_r 4 J0000006Europe/Moscow 2009, 17:08:54
58

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

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

Основы:

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

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

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

      $ screen -d -r
     
  • Откройте еще один экран «окно»: CTRL-A , c

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

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

ответил Mike Pountney 4 J0000006Europe/Moscow 2009, 17:19:07
40

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

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

  

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

     

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

     

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

     

Mosh - бесплатное программное обеспечение, доступное для 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
    всегда работает, чтобы остановить безудержный процесс.

ответил jwbensley 24 72013vEurope/Moscow11bEurope/MoscowSun, 24 Nov 2013 17:01:55 +0400 2013, 17:01:55
18

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

ответил hayalci 6 J0000006Europe/Moscow 2009, 13:11:36
9

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

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

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

  screen -ls
 

, чтобы просмотреть сеансы и

  screen -r $ {session}
 

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

ответил wzzrd 4 J0000006Europe/Moscow 2009, 17:06:11
9

tmux

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

  $ tmux
$ sh do_something_that_takes_forever

!! Соединение завершается с ошибкой, поэтому вы снова подключаетесь, как только заметите

$ tmux ls
0: 1 windows (создано Вт Авг 23 12:39:52 2011) [103x30]

$ tmux attach -t 0
 

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

ответил Jacksonkr 6 AMpWed, 06 Apr 2016 04:24:52 +030024Wednesday 2016, 04:24:52
3

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

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

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

ответил David Spillett 4 J0000006Europe/Moscow 2009, 17:47:10
2

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

ответил cepal 23 MarpmFri, 23 Mar 2012 15:44:33 +04002012-03-23T15:44:33+04:0003 2012, 15:44:33
2

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

Лоток для шпатёвки позволяет вам сделать именно это, у него есть опция повторного подключения по отключению, которая не находится в обычном режиме или putty-ng

https://puttytray.goeswhere.com/

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

ответил munkiepus 20 Jpm1000000pmTue, 20 Jan 2015 13:08:59 +030015 2015, 13:08:59
1

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

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

ответил David 4 J0000006Europe/Moscow 2009, 17:33:14

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132