Что вызывает известную "сломанную трубу", когда я использую tmux внутри сессии SSH?
Сценарий 1. Я использую SSH от своего работодателя (OSX Yosemite SSH-клиент) к своему домашнему серверу (стабильный Debian) и (повторно) подключаюсь к сеансу tmux. Если я на некоторое время оставляю терминал неактивным (~20 минут), создается впечатление, что сетевое соединение было прервано слишком долго из-за известной ошибки SSH: "сломанный канал". Если я снова вхожу в tmux, то ведет себя как ожидалось: сессия все еще жива.
Сценарий 2: я SSH от моего работодателя к моей домашней коробке. Сейчас я делаю то, что обычно делаю, но на этот раз не в сеансе tmux. Теперь я могу оставить терминал неактивным на несколько часов, он не умирает.
Сценарий 3. Я использую SSH из своего сегмента домашней сети на том же сервере и подключаюсь к сеансу tmux. Теперь я получаю ожидаемое поведение. Терминал не теряет соединение после периода бездействия, с нашим без использования tmux.
Я пытался ответить на мой вопрос в Google, но проблема в том, что я получаю ответы на неправильный вопрос: В: Я использую SSH для длительной команды, как я могу восстановить соединение, если у меня сломан канал? A: Вы слышали о Tmux? Да, у меня есть.... Но я не слышал о том, что tmux вызвал поломку труб.
Я также задал вопрос по irc, но ответа там не получил.
2 ответа
Включите поддержку активности SSH глобально в /etc/ssh_config или в вашем домашнем каталоге ~/.ssh/config
KeepAlive yes
ServerAliveInterval 60
Прежде чем я нашел эту опцию openssh, я запустил "top -d 60", чтобы сохранить соединение.
Я наполовину догадываюсь, что это связано с тем, чтобы "поддерживать сессию в живых", или "пинговать". Есть опции конфигурации для такого рода вещей. Tmux не возражает против разрыва соединения, и, по идее, вы не должны оставлять открытыми неиспользуемые соединения; это плохой сетевой этикет;-)