Ich versuche, mit ssh eine Verbindung zu Maschine 1 herzustellen und dann mit ssh eine Verbindung zu einer anderen Maschine 2 herzustellen, aber ich erhalte diesen Fehler.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Warum?
command-line
ssh
terminal
Jhonathan
quelle
quelle
ssh
!Antworten:
Wenn Sie einen Befehl mit ssh auf dem Remotecomputer ausführen, wird der Remotesitzung standardmäßig kein TTY zugewiesen. Auf diese Weise können Sie Binärdaten usw. übertragen, ohne sich mit TTY-Macken befassen zu müssen. Dies ist die Umgebung, in der der Befehl ausgeführt wird
computerone
.Wenn Sie jedoch ssh ohne einen Remote-Befehl ausführen, weist es TTY zu, da Sie wahrscheinlich eine Shell-Sitzung ausführen. Dies wird vom
ssh [email protected]
Befehl erwartet , aber aufgrund der vorherigen Erklärung ist für diesen Befehl kein TTY verfügbar.Wenn Sie eine Shell aktivieren möchten
computertwo
, verwenden Sie stattdessen diese Option, die die TTY-Zuweisung während der Remote-Ausführung erzwingt:Dies ist normalerweise sinnvoll, wenn Sie am Ende der SSH-Kette eine Shell oder einen anderen interaktiven Prozess ausführen. Wenn Sie Daten übertragen
-t
möchten , ist das Hinzufügen weder angebracht noch erforderlich , aber dann würde jeder ssh-Befehl einen datenerzeugenden oder -verbrauchenden Befehl enthalten, wie zum Beispiel:quelle
Es gibt eine bessere Möglichkeit, SSH als Relais zu verwenden: Verwenden Sie die
ProxyCommand
Option. Auf dem Client-Computer muss ein Schlüssel vorhanden sein, mit dem Sie sich beim zweiten Computer anmelden können (unter den meisten Umständen ist der öffentliche Schlüssel die empfohlene Methode zur Verwendung von SSH). Legen Sie dies in Ihre~/.ssh/config
und rennenssh computertwo
.nc
ist netcat . Jede der verschiedenen verfügbaren Versionen ist geeignet.quelle
Es erwartet ein interaktives Terminal auf einem tty-Gerät auf dem Zwischenserver.
Wenn Sie diesen Befehl versuchen, sollte es funktionieren:
Siehe
man ssh
für die-t
Option.quelle
Ich habe dieses Problem gelöst, indem ich RequestTTY Yes zu meiner ssh-Konfigurationsdatei unter ~ / .ssh / config hinzugefügt habe ...
quelle
Sie können die Option PROXY Jump in ssh verwenden
Wenn ich also eine Verbindung zu hostB herstellen muss, aber erst hostA durchlaufen muss, um dorthin zu gelangen. Normalerweise würde ich
Ich mache das jetzt
quelle
Sie können eine SSH-Konfigurationsoption "RequestTTY" über die Befehlszeile überschreiben.
Mein Arbeitsbeispiel
cd-serv-one.sh
startet/bin/bash
in der SSH-Sitzung, nachdem mehrere Befehle ausgeführt wurden:Und jetzt renne ich einfach los,
./cd-serv-one.sh
um eine benötigte SSH-Sitzung zu starten.quelle