Gibt es eine Möglichkeit, alle SSH-Verbindungen zu beenden und PuTTY in „one shot“? Ich arbeite unter Windows 7 und verwende PuTTY für SSH auf verschiedenen Linux-Hosts.

Ein Beispiel für meine Arbeitsweise:

SSH to host1 with PuTTY... banjer@host1:~> #...doin some work...ooh! need to go check something on host8... banjer@host1:~> ssh host8 banjer@host8:~> #...doin some work...OK time for lunch. lets close putty... banjer@host8:~> exit banjer@host1:~> exit Putty closes. 

Wie oben beschrieben, gibt es eine Möglichkeit, auf einmal von Host8 zum Schließen von PuTTY zu gelangen? Manchmal bin ich bis zu 5 oder 10 Hosts tief. Mir ist klar, dass ich auf das X klicken kann, um das PuTTY-Fenster zu schließen, aber ich möchte mithilfe des Befehls exit sicherstellen, dass meine SSH-Verbindungen ordnungsgemäß geschlossen werden. Mir ist auch klar, dass ich um Tipps zur Steigerung der Faulheit bitte. Ich schreibe es einfach als „Wie kann ich effizienter sein“ ab.

Kommentare

  • Nicht direkt, was Sie fragen, aber wie wäre es, wenn Sie ctrl+d mehrmals drücken?
  • @UlrichDangel Ich habe das noch nie benutzt, aber auch a Schneller Weg, um schnell aus Verbindungen auszusteigen.
  • Verschachteln Sie SSH-Sitzungen wirklich 5 bis 10 Ebenen tief? Ist Ihnen klar, dass ‚ einen verschlungenen Tunnel erstellt, der alle Pakete in Ihrer SSH-Sitzung über alle diese Hosts leitet? Könnten Sie das Problem lösen, indem Sie einfach keine SSH-Sitzungen verschachteln?
  • @ jw013 Nein, das habe ich nicht erkannt, aber es macht Sinn. Ehrlich gesagt waren 5-10 Level eine Übertreibung, aber ich habe versucht, meine Frage zu veranschaulichen, wie man Putty auf einen Schlag sauber verlässt. “

Antwort

Verwenden Sie die ssh Escape-Sequenz für die Verbindungsbeendigung.

Geben Sie in der Sitzung ssh ~. (Tilde-Punkt) ein. Sie sehen die Zeichen nicht, wenn Sie sie eingeben, aber die Sitzung wird sofort beendet.

$ ~. $ Connection to me.myhost.com closed. 

Von man 1 ssh

The supported escapes (assuming the default ‘~’) are: ~. Disconnect. ~^Z Background ssh. ~# List forwarded connections. ~& Background ssh at logout when waiting for forwarded connection / X11 sessions to terminate. ~? Display a list of escape characters. ~B Send a BREAK to the remote system (only useful for SSH protocol version 2 and if the peer supports it). ~C Open command line. Currently this allows the addition of port forwardings using the -L, -R and -D options (see above). It also allows the cancellation of existing remote port-forwardings using -KR[bind_address:]port. !command allows the user to execute a local command if the PermitLocalCommand option is enabled in ssh_config(5). Basic help is available, using the -h option. ~R Request rekeying of the connection (only useful for SSH protocol version 2 and if the peer supports it). 

Kommentare

  • Ziemlich cool! Jede Möglichkeit, in einen Alias oder eine Funktion? Nur um ihm einen leicht zu merkenden Namen wie exitall zu geben. Jetzt frage ich ‚ für viel zu viel :). Ich habe ein paar Dinge in ~/.bashrc ausprobiert, aber -bash: ~.: command not found erhalten. Ich nehme an, bash sieht es als Zeichenfolge und nicht Eine Escape-Sequenz, die direkt von der Tastatur kommt.
  • Ich mag auch die ctrl+d -Lösung, aber dies beantwortet meine Frage direkter. Vielen Dank an alle.
  • @Banjer bash sieht nie ~., es wird ‚ von ssh selbst behandelt .
  • @Gilles gotcha, macht Sinn.
  • Und es gibt ‚ keine Garantie ee, dass PuTTY dies auch tut. Der CLI-Client ssh benötigt diese Technik, da es sich um die CLI ‚ handelt. PuTTY ist eine GUI-Anwendung und es gibt weitaus benutzerfreundlichere Möglichkeiten, dies auf einer GUI zu tun.

Antwort

Drücken Sie einfach Strg D und Sie werden dort abgemeldet, um die Strg-Taste gedrückt zu halten, und drücken Sie „d“, bis das Fenster verschwindet.

Kommentare

  • Leider funktioniert dies ‚ nicht universell. Jede Sitzung, in der ein Editor oder ein anderes Vollbild-Tool ausgeführt wird, ignoriert wahrscheinlich EOT. Und selbst bash ignoriert es mitten in einer Befehlszeile. Probieren Sie es selbst aus: Geben Sie einen einzelnen Buchstaben ein und versuchen Sie es mit Ctrl-D.
  • Was macht Strg + D, ich meine, ist es sicher vorhanden oder beendet den Prozess nur?
  • Es wird sicher beendet. Es handelt sich um eine Shell-Verknüpfung, die der Eingabe von ‚ exit ‚ und der Eingabetaste entspricht.
  • Eigentlich meine ( Windows Git Bash & ubuntu bash) gibt ein logout aus.
  • Ja, ich glaube, exit ruft auch die Abmeldung als ssh auf Verbindungen sind in der Regel keine Anmeldesitzungen.

Antwort

Schließen Sie einfach PuTTY. ( Alt + F4 standardmäßig IIRC.)

Antwort

Eine andere Möglichkeit besteht darin, function für ssh zu erstellen:

 function ssh(){ /usr/bin/ssh $@ ; exit ; } 

Leider wird auch die Verbindung und das Abmelden von der Konsole immer geschlossen, nachdem Sie die Arbeit am Remote-System beendet haben.

Beachten Sie, dass Sie eine solche Funktion auf allen Ihren Servern ausführen müssen, da dieser Hack sonst nicht funktioniert . Übrigens können Sie die Funktion immer in ~ / .bashrc oder ~ / .whatever_shell_you_use_rc einfügen.

Es sieht im Vergleich zu uthers etwas schmutzig aus.

Kommentare

  • function ist kein POSIX – entfernen Sie einfach das Schlüsselwort und Sie müssen $@ zitieren richtig, oder Ihre Argumente werden nach der Wortaufteilung übergeben (schlecht).

Antwort

Oder Sie können exec verwenden, um Ihre zu ersetzen Shell-Prozess mit ssh beim Springen zu einem anderen Host:

SSH to host1 with PuTTY... banjer@host1:~> #...doin some work...ooh! need to go check something on host8... banjer@host1:~> exec ssh host8 banjer@host8:~> #...doin some work...OK time for lunch. lets close putty... banjer@host8:~> exit Putty closes. 

5 Ebenen tief ist nicht schön, da der Verkehr wird durch alle anderen Server gehen. Aus diesem Grund empfehle ich nicht, nur PuTTY oder ssh (~.) Zu beenden, da dies (je nachdem, was Sie tun) zu verwaisten Prozessen auf den Servern führen kann.

Versuchen Sie besser, weniger zu sein. “ faul „. Wenn Sie mit der rechten Maustaste auf die Titelleiste von puttys klicken, können Sie eine neue Sitzung schnell öffnen. Wenn Sie einen“ Standard „-Server haben und einen Sprung davon akzeptieren, ist die Funktion“ Sitzung duplizieren „sehr nützlich. Insbesondere bei Verwendung der Pubkey-Authentifizierung.

Antwort

Wenn es Ihnen nichts ausmacht, ein wenig Skripte zu erstellen, können Sie dies tun.

Skript: myssh .sh

#!/bin/bash ssh $1 if [ $? -eq 5 ]; then exit 5 fi 

Rufen Sie über den Punktbefehl auf:

$ . myssh [email protected] 

Wenn Sie möchten Beenden Sie eine Ebene:

$ exit 

Wenn Sie alle beenden möchten:

$ exit 5 

Kommentare

  • Natürlich müssten Sie es auf jeden Computer kopieren, von dem Sie jemals ssh könnten. Wäre es nicht ‚ nicht einfacher, nur eine Shell-Funktion namens ssh zu definieren? Dies würde die vorhergehende Periode usw. vermeiden.

Antwort

Das Eingeben der Abmeldung im Kittterminalfenster erledigt dies me:

richard@forevermore:~ > logout 

Schließt die SSH-Verbindung und beendet die Putty-Anwendung.

Kommentare

  • Ich glaube, Sie haben ‚ die Frage nicht richtig gelesen. OP führt ssh host1 aus und führt dann von host1 ssh host8 aus. Zu diesem Zeitpunkt würde ein logout dasselbe tun wie der Befehl exit, den sie bereits kennen – Verlassen Sie und setzen Sie sie wieder in host1.
  • Ok, ich verstehe, mein schlechtes.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.