3

Когда я пытаюсь войти на удаленный компьютер через ssh, я сразу же отключаюсь с сообщением «Ошибка записи: сломанный канал». Я попытался войти через mosh вместо этого, и клиент mosh зависает.

Я попытался поискать, и единственные ответы, которые я могу придумать, связаны с тайм-аутами (например, этот вопрос обмена стека Unix). Я почти уверен, что это не проблема, связанная с тайм-аутом, поскольку я не внес никаких изменений в личную конфигурацию с прошлой ночи (когда она работала в последний раз), и другие пользователи могут войти в систему просто отлично.

Запуск ssh с -vvv (очень и очень подробными журналами) ничего полезного не дал.

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

Мне также интересно, может ли sshd/mosh/etc сообщать о невозможности порождать сеанс для диагностики проблем?

2 ответа2

1

Итак, в моем конкретном случае я оставил screen открытым, на котором запущен gdb подключенный к процессу, пытающемуся воспроизвести проблему, связанную с тем, что наш продукт порождает слишком много потоков. Ну, очевидно, проблема была воспроизведена за одну ночь, и мой пользователь достиг предела системного потока пользователей.

Так что sshd не смог создать новый процесс под моим пользователем из-за ограничения процесса и потока. В конечном итоге нам нужно было войти с другим пользователем и убить мой рабочий screen , gdb и отлаживаемый процесс. Это освободило процесс и ресурсы потока, позволяя мне наконец восстановить соединение.

-1

Другое решение подробно описано здесь: https://access.redhat.com/solutions/30316

Я начал с той же самой проблемы, и во время расследования у меня был другой пользователь, который пытался использовать su как мой пользователь. Он получил ошибку, которая привела меня к ссылке выше (не может установить идентификатор пользователя: ресурс временно недоступен). Я действительно превысил допустимый предел потока для моего пользователя, и увеличение этого предела позволило мне снова войти в систему.

По сути, запустите это против вашего пользователя (это текущее количество потоков, активных для этого пользователя):

ps -u testuser -L | wc -l

Если результат больше, чем какой-либо лимит, установленный в /etc/security/limits.d/90-nproc.conf (по умолчанию 1024) для этого пользователя, вам нужно его увеличить. Вам нужно будет сделать это с другим пользователем, который еще не превысил свой лимит (или каким-то образом уничтожить некоторые потоки, чтобы иметь возможность войти в систему).

Чтобы увеличить его, просто добавьте строку, похожую на существующую, но специфичную для вашего пользователя:

testuser   soft    nproc     2048

Я знаю, что это старый вопрос, но это может помочь людям, которые имеют эту проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .