Wie man den Fehler "Pseudo-Terminal wird nicht zugewiesen" löst

watch 3m, 20s
views 2

16:05, 30.05.2024

Artikel Inhalt
arrow

  • Ursachen für den Fehler
  • Lösungen für den Fehler
  • Pseudo-TTY-Zuweisungserzwingung
  • Deaktivierung der Pseudo-TTY-Zuweisung
  • Shell Specification
  • Zusammengefasst

Bei der Verwendung des Secure Shell (SSH)-Protokolls für den Zugriff auf einen entfernten Computer kann der Fehler "Pseudo-Terminal wird nicht zugewiesen, da stdin kein Terminal ist" auftreten.

Ein Pseudo-Terminal ist ein Ersatz für ein physisches Terminal, das alle Funktionen des Terminals beibehält. Wenn wir versuchen, uns über SSH mit dem Gerät zu verbinden, wird als erstes versucht, es mit einem Terminal zu verbinden. Was aber, wenn wir eine Verbindung zu einem entfernten Gerät ohne Terminal herstellen wollen?

Wir wollen zum Beispiel die Standardeingabe (stpin) eines Befehls auf einen anderen Befehl umleiten. Ein solches Szenario kann mit Problemen wie "Pseudoterminal wird nicht zugewiesen..." verbunden sein.

In diesem Artikel werden wir uns ansehen, warum der Fehler auftritt und wie man ihn beheben kann.

Ursachen für den Fehler

Nach unserer Erfahrung gibt es einige mögliche Ursachen für den "Pseudo-Terminal wird nicht zugewiesen, weil stdin kein Terminal ist" Fehler. Hier werden wir einige davon auflisten.

  • Ausführen eines interaktiven Befehls auf einem entfernten Gerät ohne Terminal, zum Beispiel:
$ ssh user@host 'vim file.txt'Copy
  • Der Versuch, einen Befehl, der sudo-Rechte erfordert, ohne ein Terminal auf einem entfernten Gerät auszuführen, wie z.B. dieser:
$ ssh user@host 'sudo apt update'Copy
  • Versuch, einen stdin-Umleitungsbefehl aus einer Datei oder einem anderen Befehl auf dem entfernten Rechner auszuführen:
$ ssh user@host 'cat file.txt' < input.txtCopy
  • Ausführen eines SSH-Befehls aus einem Skript.

Lösungen für den Fehler

Auch wenn es viele mögliche Ursachen für den Fehler gibt, gibt es auch eine Reihe von Möglichkeiten, ihn zu beheben. Wir werden drei davon untersuchen: Pseudo-TTY-Zuweisung erzwingen, Pseudo-TTY-Zuweisung deaktivieren und Shell-Spezifikation.

Pseudo-TTY-Zuweisungserzwingung

Um den Fehler durch Pseudo-TTY-Zuweisungserzwingung zu beseitigen, müssen wir eine -t -Option für ssh verwenden. Sie zwingt ssh, ein pty zuzuweisen, auch wenn stdin kein Terminal ist.

Diese Methode ist besonders nützlich, wenn Sie Befehle mit sudo-Rechten auf dem entfernten Rechner ausführen wollen. Der folgende Befehl erlaubt es Ihnen, aus der Ferne auf einen Server zuzugreifen und eine Datei interaktiv mit dem Texteditor Vim zu bearbeiten:

$ ssh -t user@host 'vim file.txt'Copy

Dann können Sie die Paketliste (unter Ubuntu OS) mit dem Befehl sudo und den damit verbundenen Admin-Rechten auf dem Remote-Server aktualisieren:

$ ssh -t user@host 'sudo apt update'Copy

In diesen beiden Beispielen erzwingt die Option -t, dass ein Terminal zugewiesen wird. Die Option -t ist jedoch keine allgemeingültige Lösung; in einigen Fällen müssen wir doppeltes -t oder -tt verwenden. Die Option -tt rationalisiert die tty-Zuweisung ohne ein lokales tty. Ein solcher Befehl ist nützlich, um eine stdin-Umleitung auf dem entfernten Rechner auszuführen:

$ ssh -tt user@host 'cat file.txt' < input.txtCopy

Die Option -t erzwingt eine Pseudo-TTY-Zuweisung und behebt dadurch einen Fehler.

Deaktivierung der Pseudo-TTY-Zuweisung

Wir können auch die Option -T von SSH verwenden, um die Pseudo-TTY-Zuweisung insgesamt zu deaktivieren. Die Option -T zwingt ssh dazu, keine Zuweisung des entfernten Rechners vorzunehmen. Für Befehle, die kein Terminal benötigen, ist diese Option also nützlich:

$ ssh -T user@host 'ls -l'Copy

Hier beendet der Befehl Is -I die Zuordnung sofort.

Shell Specification

Um den "Pseudoterminal wird nicht zugewiesen, weil stdin kein Terminal ist"-Fehler zu beseitigen, können wir auch die Shell auf dem entfernten Rechner angeben. Die SSH-Standardeinstellung sieht vor, dass die Anmeldeshell des entfernten Benutzers für die Ausführung von Befehlen verwendet wird. Einige Shells sind jedoch nicht mit der stdin-Umleitung kompatibel, was zu Fehlern wie dem unseren führen kann.

Um das zu vermeiden, können wir die Shell angeben:

$ ssh user@host '/bin/bash -c "cat file.txt < input.txt"'Copy

Dieser Befehl zielt auf die Bash-Shell, um den Inhalt von file.txt und input.txt zu verknüpfen.

Zusammengefasst

In diesem Leitfaden haben wir uns auf drei Methoden konzentriert, um den "Pseudo-Terminal wird nicht zugewiesen, weil stdin kein Terminal ist" Fehler zu beheben: Pseudo-TTY-Zuweisung, Deaktivierung der Pseudo-TTY-Zuweisung und Shell-Spezifikation.

Mit diesen Methoden können Sie Befehle ausführen, ohne weitere Probleme mit der Terminalzuweisung zu haben.

Teilen

War dieser Artikel für Sie hilfreich?

VPS beliebte Angebote

-16.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-KVM 2048 Linux

48 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

115.5 /mo

/mo

Alle 12 Monate abgerechnet

-5.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 2048 Windows

13.7 /mo

/mo

Alle 12 Monate abgerechnet

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 32768
OS
CentOS
Software
Software
Keitaro
/mo

Monatlich abgerechnet

-5.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 2048 Windows

11.64 /mo

/mo

Alle 12 Monate abgerechnet

-7.3%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
25 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 2048 Windows

22 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 16384 Linux

40.31 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 2048 Linux

7.7 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 4096 Linux

15.95 /mo

/mo

Alle 12 Monate abgerechnet

-9.1%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 16384 Windows

66.5 /mo

/mo

Alle 12 Monate abgerechnet

Weitere Artikel zu diesem Thema

cookie

Cookies und Datenschutz akzeptieren?

Wir verwenden Cookies, um sicherzustellen, dass wir Ihnen die beste Erfahrung auf unserer Website bieten. Wenn Sie fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass Sie mit dem Empfang aller Cookies auf der HostZealot-Website einverstanden sind.