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

Соединения SSH зависают с сообщением «Ошибка записи: сломанный канал»

Я подключаюсь к системе CentOS 5.5 через SSH с машины Ubuntu 11.04.

Соединение работает должным образом, когда оно активно используется (то есть без задержек или потерь), но если его оставить на некоторое время неактивным, оно зависнет и перестанет отвечать. В конце концов будет возвращено сообщение об ошибке «Ошибка записи: сломанный канал», и я вернусь к приглашению на моем локальном компьютере.

Что я могу сделать, чтобы помочь отладить это, выяснить, что происходит, и решить эту проблему? Мне, как разработчику, очень больно постоянно восстанавливать связь.

Похоже, что конфигурация SSHD коробки CentOS не настроена для работы с клиентом KeepAlive.

Перетащите эти две строчки в конфигурацию sshd CentOS (/ etc / ssh / sshd_config), перезапустите ее и наслаждайтесь!

KeepAlive yes
ClientAliveInterval 60

Пока вы это делаете, я бы рекомендовал использовать gnu screen чтобы поддерживать вашу сессию на стороне CentOS.

Фактический ответ почти всегда заключается в том, что у вас есть какое-то устройство NAT на пути, обычно это брандмауэр, таблицы состояний которого имеют довольно агрессивный тайм-аут. Поскольку вы оставляете свое ssh-соединение в режиме ожидания в течение некоторого времени, устройство NAT «забывает» сопоставление между вашим внутренним адресом и номером порта источника, а также вашим эфемерным внешним адресом с NAT и номером порта.

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

Практическое решение для этого - сделать именно то, что предлагает yuriismaster: включить KeepAlives (которые гарантируют, что регулярный трафик будет "щекотать" эту запись в таблице состояний) и использовать screen на удаленной стороне (чтобы сохранить состояние на случай, если что-то упадет). Я отправляю этот ответ только потому, что вы спросили, что происходит, а также что с этим делать. Надеюсь, это проясняет Зачем предложения yuriismaster хорошие.