Ich versuche, mich mit ssh mit Maschine eins und dann mit ssh mit einer anderen Maschine zwei zu verbinden, aber ich erhalte diesen Fehler.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Warum?
Akzeptierte Antwort:
Wenn Sie einen Befehl auf dem Remote-Computer mit ssh ausführen, wird standardmäßig kein TTY für die Remote-Sitzung zugewiesen. Auf diese Weise können Sie Binärdaten usw. übertragen, ohne sich mit TTY-Macken herumschlagen zu müssen. Dies ist die Umgebung, die für den auf computerone
ausgeführten Befehl bereitgestellt wird .
Wenn Sie jedoch ssh ohne einen Remote-Befehl ausführen, wird ein TTY zugewiesen, da Sie wahrscheinlich eine Shell-Sitzung ausführen. Dies wird von ssh [email protected]
erwartet Befehl, aber aufgrund der vorherigen Erklärung ist für diesen Befehl kein TTY verfügbar.
Wenn Sie eine Shell auf computertwo
wollen , verwenden Sie stattdessen dies, wodurch die TTY-Zuweisung während der Remote-Ausführung erzwungen wird:
ssh -t [email protected] 'ssh [email protected]'
Dies ist normalerweise angemessen, wenn Sie schließlich eine Shell oder einen anderen interaktiven Prozess am Ende der SSH-Kette ausführen. Wenn Sie Daten übertragen wollten, ist es weder angemessen noch erforderlich, -t
hinzuzufügen , aber dann würde jeder ssh-Befehl einen datenerzeugenden oder -verbrauchenden Befehl enthalten, wie:
ssh [email protected] 'ssh [email protected] "cat /boot/vmlinuz"'