Назад | Перейти на главную страницу

Что вызывает знаменитый «сломанный канал», когда я использую tmux внутри сеанса SSH?

Сценарий 1. Я использую SSH от своего работодателя (SSH-клиент OSX Yosemite) на мой домашний сервер (стабильный Debian) и (повторно) подключаюсь к сеансу tmux. Если я оставлю терминал неактивным на некоторое время (~ 20 минут), будет казаться, что сетевое соединение было прервано слишком надолго из-за известной ошибки SSH: «сломанная труба». Если я снова вхожу в систему, tmux ведет себя так, как ожидалось: сеанс все еще жив.

Сценарий 2: Я отправляюсь по SSH от работодателя до дома. Теперь я делаю то, что обычно делаю, но на этот раз не в сеансе tmux. Теперь могу часами оставлять терминал неактивным, он не умирает.

Сценарий 3: Я использую SSH из собственного сегмента домашней сети на тот же сервер и подключаюсь к сеансу tmux. Теперь я получаю ожидаемое поведение. Терминал не теряет соединение после периода бездействия, при этом без использования tmux.

Я попытался задать свой вопрос в Google, но проблема в том, что я получаю ответы не на тот вопрос: Q: Я использую SSH для длительной команды, как я могу повторно подключиться, если у меня сломался канал? A: Вы слышали о tmux? Да ... . Но я не слышал о сломанных трубах, вызванных tmux.

Я тоже задал вопрос по irc, но не получил там ответа.

Включите поддержку активности SSH глобально в / etc / ssh_config или в вашем домашнем каталоге ~ / .ssh / config

KeepAlive yes
ServerAliveInterval 60

Прежде, чем я нашел эту опцию openssh, я бы запустил "top -d 60", чтобы поддерживать соединение.

Я наполовину предполагаю, что это связано с «поддержанием сеанса», иначе говоря, «пингами». Для этого есть параметры конфигурации. Tmux не возражает против отключения, и, в идеале, не следует оставлять неиспользуемые соединения открытыми; это плохой сетевой этикет ;-)