SSH, если вывод команды превышает 5 строк


11

Мне посоветовали задать этот вопрос здесь: я озадачен следующей проблемой, с которой я сейчас сталкиваюсь.
У меня есть сервер Debian 5.0 Linux, подключенный через Ethernet-кабель к маршрутизатору DSL. Мой ноутбук работает под управлением Windows 7 и подключен по беспроводной связи (802.11b / g) к тому же маршрутизатору DSL. Если я SSH подключаюсь к серверу с помощью Putty и пытаюсь выполнить команду, которая приводит к нескольким строкам вывода, мой SSH сеанс останавливается. Ex.

ls -al /             // Freezes
ls -al / > ~/boo.txt // OK
vi ~/boo.txt         // OK
top                  // Freezes

Все вышеперечисленные команды работают, если я выполняю их непосредственно на сервере или если я переключаю соединение моего ноутбука на проводное соединение. Что дает? Эта проблема действительно сбивает меня с толку! Спасибо


Возможно, вы захотите задать этот вопрос в StackOverflow, но, похоже, это может быть проблемой со специальными символами (возможно, цветом), поскольку vi не делает никакой раскраски (если это не vim).
Topher Fangio

Он даже спросить его на StackOverflow, но, вероятно , будет лучше перенести его в ServerFault ... и я с Айдан: мой первый подозреваемый сеть MTU.
dmckee --- котенок экс-модератора

Ах, ха, да, ServerFault, а не StackOverflow ... это понедельник = P
Topher Fangio

Ответы:


9

звучит как проблема проводного MTU. немного ...

Возможно ли, что у вас включены jumboframes? возможно нет. в любом случае - попробуйте установить более низкую mtu на debian и посмотрите, поможет ли это.


откомандирован; это звучит как проблема MTU. Я бы посоветовал пробовать все большие и большие пакеты (это легко сделать с помощью ping), пока вы не получите ошибки / пропущенные пакеты. Или просто проверьте настройки MTU везде :)
MikeyB

Спасибо людям! Понизьте MTU на ноутбуке - вот и все. Относится ли MTU к отправителю / получателю / к обоим? Я мог бы пинговать сервер с ноутбука с большим размером данных. Обратное не было правдой. Сервер Linux: ~ # ping -S 5000 athlon64-laptop.lan PING athlon64-laptop.lan 56 (84) байтов данных 64 байта из xxxx: icmp_seq = 1 ttl = 128 время = 2,71 мс На ноутбуке с Windows> ping -l 2048 athlon64x2-server.lan Пингует athlon64x2-server.lan с 2048 байтами данных: время ожидания запроса истекло. > ping -l 1048 athlon64x2-server.lan Pinging athlon64x2-server.lan с 1048 байтами данных: Ответ от xxxx: байты = 1048 время = 3 мс TTL = 64

@leftbrainlogic - проблемы с mtu указывают на то, что в вашей сети есть что-то подозрительное. может быть, точка доступа не пропускает самые большие разрешенные кадры [1500B] для быстрого Ethernet? Вы вручную настроили сервер для использования jumboframes?
PQD

@pQd - Нет, на сервере только что установлена ​​ванильная версия Debian 5.0. Я принял все значения по умолчанию, кроме разбиения диска и имени хоста. Вывод ifconfig -a здесь: pastebin.com/f78fcbf3d

@leftbrainlogic - хорошо; попробуйте понизить mtu, как описано в моей ссылке. Ваш 1500B - это стандартная длина, думаю, это указывает на некоторые проблемы с коммутатором, точкой доступа или сетевой картой Wi-Fi.
PQD

3

Вероятно, существует проблема с MTU вашего сетевого подключения - когда сервер Linux пытается отправить слишком много байтов данных в одном сетевом пакете, возможно, маршрутизатор отказывается пересылать его в окно Windows, поскольку считает, что размер пакета слишком большой для отправки по беспроводной сети. Вы должны быть в состоянии уменьшить MTU для интерфейса Ethernet на коробке linux, и это, вероятно, решит вашу проблему.

Чтобы ping -s <packetsize> <windows-ip> выполнить диагностику, попробуйте перейти от окна linux к IP ping <linux-ip> <packetsize>-адресу вашего компьютера с Windows и от окна windows к linux с различными значениями для параметра пакета размера, и посмотрите, отличается ли максимальный размер в обоих направлениях.

Также: man pingна Linux будет полезно для понимания того, что происходит.


0

Первое, что нужно сделать, это включить режим отладки как на клиенте, так и на сервере.

PuTTY имеет встроенную отладку, которая доступна в Session -> Logging . Обратите внимание, что вам нужно загрузить сеанс, который вы собираетесь использовать, до установки параметров ведения журнала. Настройки ведения журнала являются частью конфигурации сеанса.

На сервере вы можете оставить LogLevel на INFO (in /etc/ssh/sshd_config) и изменить его на DEBUG, только если вы не видите ничего, связанного с вашей проблемой. Не забудьте выйти и перезапустить сервер ssh, чтобы применить изменения ( /etc/init.d/ssh restart). Если DEBUG не дает полезной информации, попробуйте DEBUG3 согласно man sshd_config.

Пожалуйста, обновите ваш вопрос вашими выводами!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.