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