SSH non riuscito: richiesta di allocazione PTY non riuscita sul canale 0


11

Quindi ho cercato su Google l'errore e ho verificato serverfault, ma le soluzioni non erano adatte. La maggior parte dei risultati erano problemi con / dev / pts, ma questo è montato. Altri risultati sono errori con git, ma non c'è git sulla macchina.

Il mio account non è bloccato, posso ancora accedere alla console. Anche altri utenti hanno questo problema, quindi non penso che abbia qualcosa a che fare con qualcosa che è nel mio .ssh /

Ottengo questa risposta con 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

Dopo questo la sessione si blocca. Qualcuno ha idea di cosa sta succedendo?


5
Sei in grado di utilizzare ssh user@host "/bin/bash -i"per accedere?
Tim

hmm .. sì, funziona ...
blauwblaatje,

1
Ho visto un caso in cui i /dev/pt*dispositivi dovevano essere rimossi e aggiunti di nuovo manualmente perché danneggiati. E in quel caso, anche usando la soluzione che ho elencato sopra ha funzionato.
Tim

@Tim ho lo stesso problema. Posso anche accedere con ssh user@host "/bin/bash -i. Potresti essere più specifico su quali comandi devo eseguire per risolvere questo problema? Come posso ripristinare /dev/pt*? Grazie.
Erwin Rooijakkers,

4
@ user2609980 run mount, una delle righe emesse dovrebbe essere / dev / pts, prendere nota delle opzioni. Smontare umount /dev/ptse rimontare con la mount -t devpts -o OPTIONS devpts /dev/ptssostituzione delle OPZIONI con le opzioni osservate prima dello smontaggio.
Tim

Risposte:


10

Ok, grazie a Tim. umounting / dev / pts e poi mount / dev / pts hanno fatto il trucco.


Questo è molto strano. Qualche idea sul perché sia ​​così? È un bug del driver di dispositivo o qualcos'altro? È stato riparato? ecc ...
not2qubit

Nessuna idea. E non l'ho più visto.
Blauwblaatje,

1
@blauwblaatje Ho lo stesso problema. Posso anche accedere con ssh user@host "/bin/bash -i. Potresti essere più specifico su quali comandi devo eseguire per risolvere questo problema? Grazie.
Erwin Rooijakkers,

Per quanto posso ricordare, ho solo fatto: umount / dev / pts && mount / dev / pts
blauwblaatje

Ho appena avuto il problema e ho dovuto farlo mkdir /dev/ptsprima che funzionasse. Altrimenti questo ha risolto il problema per me.
Angelo Fuchs,

1

lascia che ti racconti tutta la mia esperienza, provo a connettermi da Linux a Windows tramite SSH, ho avuto server con openssh e altri con Freessh . Quando il server ha openssh funziona benissimo, ma da allora inizia a presentare un messaggio "richiesta shell fallita sul canale 0" quando freessh è il servizio in esecuzione (è passato da un giorno all'altro, funziona meglio che OpenSSH)

Un test fatto da me è stato quello di provare a stabilire la connessione da un altro utente, poiché vedo che funziona correttamente, eseguo il backup del mio ~ / .ssh (l'utente che presenta il problema) e successivamente funziona correttamente.

Penso che il file in questione fosse known_hosts, i permessi siano belli così come il contenuto, ma è stato così che l'ho risolto.


1

L'errore significa solo che l'apertura dello pseudo terminale non è riuscita. Molto probabilmente non ha nulla a che fare con ssh. Per eseguire il debug sul lato server SSH utilizzare una demo PTY molto semplice come mypty in http://rachid.koucha.free.fr/tech_corner/pty_pdip.html per vedere se è possibile allocare qualsiasi PTY. In caso contrario, utilizzare strace per verificare dove non riesce. (Per me era un collegamento simbolico mancante / dev / ptmx in un contenitore, come spiegato in https://www.kernel.org/doc/Documentation/filesystems/devpts.txt )


0

Potrebbe dipendere da LANG e dalle impostazioni LC, ma questo funziona per me:

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
Perché pensi che il problema potrebbe essere correlato alle variabili LANGe LC_*ambiente?
Adrian Heine,

Mi chiedo cosa ho cambiato prima che ciò accadesse. In realtà ho modificato alcune di queste variabili! Vediamo se funziona anche per me.
Erwin Rooijakkers,

0

Nel mio caso, mi stavo collegando a un host Windows (con Cygwin e altri software correlati) da un box Linux.

I tentativi stranamente di connettersi al server Windows hanno funzionato ma non sono riusciti durante l'allocazione del terminale interattivo. Controlla i ssh -vvregistri di seguito.

...
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
...

Il mio collega ha scoperto che era a causa di molti processi aperti su Windows Server che utilizzava le stesse credenziali di accesso del mio e che eseguiva un'operazione batch automatizzata.

Uccidendolo temporaneamente, ha fatto il trucco e ha permesso la mia connessione SSH con successo.

Molto probabilmente, windows + cygwin, aveva un limite massimo in questo senso. Rimane da lavorare per disallocare correttamente le risorse quando tali processi vengono eseguiti.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.