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

Після цього сеанс заморожується. Хтось має уявлення про те, що відбувається?


5
Чи можете ви використовувати ssh user@host "/bin/bash -i"для входу?
Тім

хм .. так, це працює ...
blauwblaatje

1
Я бачив випадок, коли /dev/pt*пристрої потрібно було вийняти та вручну знову додати, оскільки вони стали пошкодженими. І в цьому випадку, використовуючи навколо мене перелічені вище роботи, також працювало.
Тім

@Tim У мене така ж проблема. Я також можу ввійти в систему ssh user@host "/bin/bash -i. Не могли б ви бути більш конкретними щодо того, які команди я повинен запустити, щоб виправити це? Як відновити /dev/pt*? Спасибі.
Erwin Rooijakkers

4
@ user2609980 запустити mount, один з виведених рядків повинен бути / dev / pts, занотуйте параметри. Від'єднайте umount /dev/ptsта повторно встановіть mount -t devpts -o OPTIONS devpts /dev/ptsзаміну OPTIONS на параметри, які ви спостерігали перед демонтажем.
Тим

Відповіді:


10

Добре, дякую Тіму. umounting / dev / pts, а потім mount / dev / pts зробив свою справу.


Це дуже дивно. Будь-яка ідея, чому це так? Це помилка драйвера пристрою чи щось інше? Це було виправлено? тощо ...
not2qubit

Не маю уявлення. І я її більше не бачив.
blauwblaatje

1
@blauwblaatje У мене така ж проблема. Я також можу ввійти в систему ssh user@host "/bin/bash -i. Не могли б ви бути більш конкретними щодо того, які команди я повинен запустити, щоб виправити це? Спасибі.
Erwin Rooijakkers

Наскільки я пам'ятаю, я лише зробив: umount / dev / pts && mount / dev / pts
blauwblaatje

У мене просто була проблема і довелося, mkdir /dev/ptsперш ніж вона спрацювала. Інакше це вирішило проблему для мене.
Анджело Фукс

1

дозвольте розповісти вам увесь свій досвід, я намагаюся підключитися від linux до windows через ssh, мав сервери з openssh та інші з freessh . Коли сервер відкрито, він працює нормально, але з тих пір, коли він починає представляти повідомлення про "оболонку запиту на каналі 0", коли freessh працює сервісом (він перейшов з одного дня в інший, він використовує для роботи краще, відкриває)

Тест, зроблений мною, полягав у тому, щоб спробувати стабільне підключення від іншого користувача, оскільки я бачу, що він працює добре, я створюю резервну копію ~ / .ssh (користувача, який представляє проблему), і після цього він працює добре.

Я думаю, що задіяний файл був відомий_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

Це може залежати від вашої мови та налаштувань 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_*середовищем?
Адріан Гейне

Мені цікаво, що я змінив до того, як це почалося. Я фактично змінив деякі з цих змінних! Подивимось, чи працює вона і для мене.
Erwin Rooijakkers

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 мали максимальну межу в цьому відношенні. Залишається робота над правильним розподілом ресурсів, коли ці процеси виконуються запущеними.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.