Nach der Rückkehr von ssh -tt kann ich auf Git Bash nichts mehr eingeben

Nach der Rückkehr von ssh -tt kann ich auf Git Bash nichts mehr eingeben

Ich wollte einen Befehl in einer Remote-Shell in ihrer interaktiven Umgebung ausführen, damit mein Remote .bash_profiledort zuerst geladen wird, bevor der Befehl ausgeführt wird.

Das funktioniert super:

  • echo "command" | ssh user@remote_host [1]

Aber es gibt einen Fehler

Es wird kein Pseudoterminal zugewiesen, da stdin kein Terminal ist.

Ich weiß nicht, ob das ein Problem ist, da der obige Befehl für meinen Zweck gut funktioniert, aber ich habe trotzdem nach einer Lösung gesucht, um das Problem zu beheben, und ich habe gefunden

  • ssh -t -t [2]

Durch die Kombination erhalten Sie echo "command" | ssh -tt user@remote_hostetwas, das hervorragend funktioniert.

Aber aus irgendeinem seltsamen Grund kann ich bei Git Bash nach der Rückkehr von der Ausführung des Befehls nichts mehr eingeben. Ich habe es bei Cygwin getestet, wo es großartig funktioniert, also ist es nur bei Git Bash, das dieses Problem hat.

Ich habe versucht, es einzugeben, exitfür den Fall, dass es immer noch unsichtbar in dieser Remote-Shell feststeckt, aber nichts funktioniert.

ssh -ttIrgendwelche Ideen, was das Problem bei der Ausführung auf Git Bash sein könnte ?

Antwort1

Die Meldung „Pseudoterminal wird nicht zugewiesen“ dient nur zu Informationszwecken. Wenn der von Ihnen ausgeführte Befehl kein Terminal benötigt, sollten Sie besser ssh mit der -TOption ausführen, die PTY-Zuweisung zu deaktivieren und die Meldung zu ignorieren.

Es klingt, als ob Ihr lokales TTY aus irgendeinem Grund in einem seltsamen Zustand verbleibt. Durch Ausführen stty sanesollte das Terminal in einen nutzbaren Zustand zurückgesetzt werden. Ich weiß, Sie sagten, Sie könnten nicht tippen, aber Sie könnten Folgendes versuchen:

  1. Drücken Sie Strg-Q (halten Sie also die Strg-Taste gedrückt und drücken Sie „Q“), um eine eventuell aktive Strg-S/Strg-Q-Pause aufzuheben.
  2. Geben Sie Strg-J ein. Dies ist ein wörtliches Newline-Zeichen, um sicherzustellen, dass die Shell bereit ist, eine neue Befehlszeile zu lesen.
  3. Geben Sie „stty sane“ ein und drücken Sie dann erneut Strg+J. Versuchen Sie es, auch wenn das, was Sie eingeben, nicht auf dem Bildschirm erscheint.

Wenn das nicht funktioniert, besteht die einzige Lösung darin, auf dem festgefahrenen TTY von einem anderen Terminal aus „stty sane“ auszuführen.

  1. Öffnen Sie ein weiteres Terminalfenster.
  2. Verwenden Sie „ps“, um herauszufinden, auf welchem ​​PTY die feststeckende Sitzung liegt.
  3. Wird stty sanemit vom PTY umgeleiteter Eingabe ausgeführt.

Beispielsweise unter Linux:

$ ps -fu jdoe
...
jdoe   2083  2080  0 22:17 pts/0    00:00:00 /bin/bash  <-- TTY is "/dev/pts/0"
$ stty sane < /dev/pts/0

verwandte Informationen