Сбой SSH: запрос распределения PTY не выполнен на канале 0

11

Поэтому я погуглил ошибку и проверил ошибку сервера, но решения не подошли. Большинство результатов были проблемы с / dev / pts, но это смонтировано. Другие результаты - ошибки с git, но на машине нет git.

Моя учетная запись не заблокирована, я все еще могу войти в консоль. У других пользователей также есть эта проблема, поэтому я не думаю, что это как-то связано с тем, что находится в моем .ssh /

Я получаю этот ответ с помощью ssh -vv:

<snip>
debug1: Next authentication method: password
rogier@server's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 100 id 0
PTY allocation request failed on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

После этого сессия зависает. Кто-нибудь знает, что происходит?

blauwblaatje
источник
5
Вы можете использовать ssh user@host "/bin/bash -i"для входа?
Тим
хм .. да, это работает ...
Blauwblaatje
1
Я видел случай, когда /dev/pt*устройства необходимо было удалить и заново добавить вручную, потому что они стали поврежденными. И в этом случае использование обходного пути, который я перечислил выше, также сработало.
Тим
@ У меня та же проблема. Я также могу войти через ssh user@host "/bin/bash -i. Не могли бы вы более конкретно указать, какие команды мне нужно выполнить, чтобы это исправить? Как мне восстановить /dev/pt*? Благодарю.
Эрвин Ройяккерс
4
@ user2609980 run mount, одна из выведенных строк должна быть / dev / pts, запишите параметры. Размонтируйте umount /dev/ptsи mount -t devpts -o OPTIONS devpts /dev/ptsзамените с заменой OPTIONS на опции, которые вы наблюдали до размонтирования.
Тим

Ответы:

10

Хорошо, спасибо Тиму. размонтирование / dev / pts и затем монтирование / dev / pts сделали свое дело.

blauwblaatje
источник
Это очень странно Есть идеи, почему это так? Это ошибка драйвера устройства или что-то еще? Это было исправлено? и т.д ...
not2qubit
Без понятия. И я не видел это снова.
Blauwblaatje
1
@blauwblaatje У меня такая же проблема. Я также могу войти через ssh user@host "/bin/bash -i. Не могли бы вы более конкретно указать, какие команды мне нужно выполнить, чтобы это исправить? Благодарю.
Эрвин Ройяккерс
Насколько я помню, я сделал только: umount / dev / pts && mount / dev / pts
blauwblaatje
У меня просто была проблема, и я должен был ее решить mkdir /dev/pts. В противном случае это решило проблему для меня.
Анджело Фукс
1

позвольте мне рассказать вам весь мой опыт, я пытаюсь подключиться из Linux к Windows через SSH, имел серверы с OpenSSH и другие с Freessh . Когда на сервере есть openssh, он работает нормально, но с тех пор он начинает показывать сообщение «запрос оболочки не выполнен на канале 0», когда freessh - это запущенный сервис (он приходил из одного дня в другой, его лучше использовать, чтобы OpenSSH)

Сделанный мною тест состоял в том, чтобы попытаться установить стабильное соединение от другого пользователя, поскольку я вижу, что он работает нормально, я делаю резервную копию моего ~ / .ssh (пользователя, который представляет проблему), и после этого он работает нормально.

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

Перес П. Хавьер Э.
источник
1

Ошибка просто означает, что открытие псевдотерминала не удалось. Скорее всего, это не имеет ничего общего с ssh. Для отладки на стороне сервера ssh используйте очень простую демонстрацию PTY, такую ​​как mypty, в http://rachid.koucha.free.fr/tech_corner/pty_pdip.html, чтобы увидеть, можно ли вообще выделить какой-либо PTY. Если нет, используйте strace, чтобы выяснить, где он не работает. (Для меня это была отсутствующая символическая ссылка / dev / ptmx в контейнере, как описано в https://www.kernel.org/doc/Documentation/filesystems/devpts.txt )

Уве Гойдер
источник
0

Может зависеть от вашего LANG и ваших настроек LC, но это работает для меня:

unset LANG        2>/dev/null
unset LC_MONETARY 2>/dev/null
unset LC_NUMERIC  2>/dev/null
unset LC_MESSAGES 2>/dev/null
unset LC_COLLATE  2>/dev/null
unset LC_CTYPE    2>/dev/null
ssh -l username hostname
Видар Нож
источник
2
Как вы думаете, почему проблема может быть связана с переменными среды LANGи LC_*?
Адриан Хейне
Мне интересно, что я изменил до того, как это начало происходить. Я действительно изменил некоторые из этих переменных! Посмотрим, сработает ли это и у меня.
Эрвин Ройяккерс
0

В моем случае я подключался к хосту Windows (под управлением Cygwin и других связанных программ) из коробки Linux.

Как ни странно, попытки подключиться к серверу Windows работали, но не удалось выделить интерактивный терминал. Проверьте ssh -vvжурналы ниже.

...
Authentication succeeded
...
Entering interactive session
Requesting authentication agent forwarding.
Sending environment.
Sending env LANG = en_US.UTF-8
PTY allocation request failed on channel 4
...

Мой коллега понял, что это произошло из-за множества открытых процессов на сервере Windows, которые использовали те же учетные данные, что и мой, и выполняли некоторые автоматические пакетные операции.

Временно убил его, сделал свое дело и успешно разрешил мое соединение ssh.

Скорее всего, у windows + cygwin был максимальный предел в этом отношении. Работа остается де-распределять ресурсы правильно , когда эти процессы выполняются работы.

Miku
источник