У меня есть вопрос, на который я не смог найти ответ. У меня есть два компьютера, оба из которых работают под управлением Ubuntu 12.04. Я держу один из своих компьютеров дома и использую SSH для подключения к нему с другого («удаленного») компьютера. Удаленный компьютер может без проблем подключаться к домашнему компьютеру. На удаленном компьютере также установлено значение SetAliveInterval, равное 60, в / etc / ssh / ssh_config, поэтому соединение не прекратится, если я на мгновение отойду от компьютера.
Иногда мое интернет-соединение на удаленном компьютере прерывается. Из-за прерываний Интернета мой SSH-туннель закрывается (конечно). Когда я восстанавливаю подключение к Интернету и повторно подключаюсь к домашнему компьютеру, используя новый туннель SSH, я вижу, используя #ps ax
, что старый процесс подключения SSH все еще выполняется. Это проблема, потому что я использую зашифрованный домашний каталог на домашнем компьютере, который не позволяет перешифровать файлы до тех пор, пока это (ныне мертвое) соединение SSH не будет разорвано.
Есть ли способ установить sshd_config на домашнем компьютере, чтобы он автоматически определял, когда соединение прервалось, и прерывал его?
Попробуйте экран или 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 являются секундами (пять минут).
Вы можете попробовать mosh , замену SSH, построенную поверх SSH. Он поддерживает роуминг и прерывистое соединение, поэтому ваш сеанс Mosh (SSH) будет просто продолжаться с того места, на котором вы остановились, всякий раз, когда ваше интернет-соединение восстанавливается после прерывания.
Вам нужно будет установить Mosh на обе машины.