Процесс SSH не уничтожен на удаленной машине, когда удаленная система неожиданно отключается

У меня есть вопрос, на который я не смог найти ответ. У меня есть два компьютера, оба из которых работают под управлением Ubuntu 12.04. Я держу один из своих компьютеров дома и использую SSH для подключения к нему с другого («удаленного») компьютера. Удаленный компьютер может без проблем подключаться к домашнему компьютеру. На удаленном компьютере также установлено значение SetAliveInterval, равное 60, в / etc / ssh / ssh_config, поэтому соединение не прекратится, если я на мгновение отойду от компьютера.

Иногда мое интернет-соединение на удаленном компьютере прерывается. Из-за прерываний Интернета мой SSH-туннель закрывается (конечно). Когда я восстанавливаю подключение к Интернету и повторно подключаюсь к домашнему компьютеру, используя новый туннель SSH, я вижу, используя #ps ax, что старый процесс подключения SSH все еще выполняется. Это проблема, потому что я использую зашифрованный домашний каталог на домашнем компьютере, который не позволяет перешифровать файлы до тех пор, пока это (ныне мертвое) соединение SSH не будет разорвано.

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

8
задан 19 February 2013 в 12:22

2 ответа

Попробуйте экран или tmux. На стороне сервера или обеих сторонах, если Вам нравится:

sudo apt-get install tmux

После входа в систему запустите tmux.

tmux

Если соединение повреждается, войдите в систему снова через ssh и повторно подключите tmux сессию. Обнаружить число сессии:

tmux ls

Вывод мог бы быть чем-то вроде этого:

0: 1 окно (созданный вторник 25 декабря 19:20:40 2012)

Соединитесь с пронумерованной сессией tmux как это:

tmux attach -t 0

Затем Вы скоро вернулись, где Вы оставили его. Вы не должны будете уничтожать сессии. Они просто ожидают Вашего следующего визита. Или, если Вы просто хотите уничтожить сессию...

На стороне сервера посмотрите /etc/ssh/sshd_config установка для ClientAliveInterval и ClientAliveCountMax. (man 5 ssh_config)

ClientAliveInterval 300
ClientAliveCountMax 0

После того как они были изменены на Ваше предпочтение, перезапустите сервер SSH.

sudo /etc/init.d/ssh restart

Эти 300 являются секундами (пять минут).

5
ответ дан 19 February 2013 в 12:22

Вы можете попробовать mosh Install mosh , замену SSH, построенную поверх SSH. Он поддерживает роуминг и прерывистое соединение, поэтому ваш сеанс Mosh (SSH) будет просто продолжаться с того места, на котором вы остановились, всякий раз, когда ваше интернет-соединение восстанавливается после прерывания.

Вам нужно будет установить Mosh на обе машины.

Ссылки:

0
ответ дан 19 February 2013 в 12:22

Другие вопросы по тегам:

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