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 ‚ vonssh
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 selbstbash
ignoriert es mitten in einer Befehlszeile. Probieren Sie es selbst aus: Geben Sie einen einzelnen Buchstaben ein und versuchen Sie es mitCtrl-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 vonhost1
ssh host8
aus. Zu diesem Zeitpunkt würde einlogout
dasselbe tun wie der Befehlexit
, den sie bereits kennen – Verlassen Sie und setzen Sie sie wieder inhost1
. - Ok, ich verstehe, mein schlechtes.