Frage Wie kann man Befehle an die "innere" SSH-Sitzung senden?


Stellen Sie sich ein Szenario vor, in dem ich von meinem lokalen Computer aus bei einem Server angemeldet bin (den wir "Wallace" nennen), und von dort aus ssh in einen anderen Server (den wir "Gromit" nennen):

laptop ---ssh---> Wallace ---ssh---> Gromit

Dann hängt die SSH-Sitzung von Wallace zu Gromit und ich möchte sie töten. Wenn ich reinkomme ~. um ssh zu töten, tötet es die ssh-sitzung von meinem laptop zu Wallace, weil die ~ wird von dieser ssh-Sitzung abgefangen, und die . wird als Befehl zum Beenden der Sitzung verwendet. Wie sende ich einen Befehl an die SSH-Sitzung zwischen Wallace und Gromit? Wie töte ich mein "inneres" ssh?


30
2017-10-05 14:59


Ursprung


Zu Ihrer Kenntnisnahme: Bei einigen Tastaturlayouts müssen Sie möglicherweise zweimal die Taste "~" drücken, um ein Zeichen "~" zu drucken. Ich benutze oft den Bildschirm, wenn eine SSH-Verbindung verloren geht, kann ich einfach eine andere Shell starten, um diese Sitzung zu beenden. - math


Antworten:


Fügen Sie eine weitere Tilde hinzu (dh, geben Sie ein ~~.). Jede nachfolgende Tilde wird von der äußersten SSH - Sitzung gegessen, die noch keine gegessen hat, aber wenn der nächste Charakter eine andere Tilde ist, wird sie zur nächsten Sitzung in.

Wenn, von gromit1, Sie haben dann einen dritten Host angerufen (nennen wir es Wensleydale) ~~~. würde die Sitzung auf wensleydale ablegen und Sie zu einer Eingabeaufforderung auf gromit zurückbringen.

1 Und was für ein großartiger Server das ist; Wie oft habe ich von einem Entwickler gehört, wie er "Host, Gromit" knackt?


39
2017-10-05 15:14



Verbunden: Der Telnet-Song - voretaq7
Oh, das ist wunderbar. Ich kann nicht glauben, dass ich noch nie darauf gestoßen bin. - MadHatter
Es wäre großartig, wenn es eine Möglichkeit gäbe, ein visuelles Feedback darüber zu erhalten, wie weit du den Stack entfernt hast, falls du es hast laptop --> Wallace --> Gromit --> Shaun --> Timmy oder sowas wie verrückt ... - iconoclast


Sie können beliebige Befehle ausgeben und die Ausgabe der innersten Shell in eine Variable abfangen

export output=`echo some_cmd | ssh user@host |  echo some_cmd2 | ssh user2@host2`

-2
2017-10-05 15:37



Das ist sehr interessant, aber ich bin mir nicht sicher, wie es sich auf die Frage bezieht. Können Sie erklären? - iconoclast