ssh: PTY allocation request failed on channel 0

Manchmal kann es vorkommen, das ein SSH-Login auf ein System fehlschlägt, mit der obigen Meldung:

$ ssh aix09
PTY allocation request failed on channel 0

Es konnte kein Pseudo-Terminal mehr alloziert werden, d.h. alle verfügbaren Pseudo-Terminals sind schon in Benutzung. Dies hat in der Regel eine von 2 Ursachen:

  • Entweder sind tatsächlich schon alle Pseudo-Terminals in Verwendung, weil es z.B. extrem viele Logins auf das System gibt, oder
  • die Pseudo-Terminals sind vom Kernel nicht korrekt freigegeben worden.

Als erstes stellt sich die Frage wie man dennoch auf die Maschine kommt, ohne z.B. die Konsole benutzen zu müssen. Mit einer der beiden folgenden Varianten sollte man sich auf das System mit SSH einloggen können:

$ ssh aix09 bash -i
bash: cannot set terminal process group (-1): A specified file does not support the ioctl system call.
 bash: no job control in this shell
aix09 $
oder
$ ssh aix09 ksh -i
aix09 $

Ist man nun eingeloogt, kann man zunächst untersuchen, ob tatsächlich alle Pseudo-Terminals in Verwendung sind. Das geht am einfachsten mit Hilfe des Kommandos fuser:

aix09 $ cd /dev/pts
aix09 $ fuser *
0:66126088
1:60096860
...
254:  62062964
255:  59310558

Die Anzahl der verfügbaren Pseudo-Terminals ist durch das Attribut ATTnum des Geräts pty0 bestimmt:

aix09 $ lsattr -El pty0
ATTnum     256       Maximum number of Pseudo-Terminals     True
BSDnum     16        Maximum number of BSD Pseudo-Terminals True
autoconfig available STATE to be configured at boot time    True
csmap      sbcs      N/A                                    True

Die Anzahl lässt sich leicht mit dem chdev Kommando erhöhen:

aix09 # chdev -l pty0 -a ATTNum=368
pty0 changed

Es stehen sofort die zusätzlichen Pseudo-Terminals zur Verfügung, was man nach dem Einloggen mittels SSH auch mit dem Kommando tty überprüfen kann:

aix09 $ tty
/dev/pts/256
%d Bloggern gefällt das: