Er der en måde at bakke ud af alle SSH-forbindelser og lukke PuTTY i “one shot”? Jeg arbejder i Windows 7 og bruger PuTTY til SSH til forskellige Linux-værter.
Et eksempel på den måde, jeg arbejder på:
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.
Pr. Ovenfor, nogen måde at komme fra vært 8 til at lukke PuTTY i et skud? Nogle gange finder jeg mig selv op til 5 eller 10 værter dybt. Jeg er klar over, at jeg kan klikke på X for at lukke PuTTY-vinduet, men jeg kan godt lide at sikre, at mine SSH-forbindelser lukkes ordentligt ved hjælp af kommandoen exit. Jeg er også klar over, at jeg beder om tips til, hvordan man kan øge dovenskab. Jeg skriver bare om det, “hvordan kan jeg være mere effektiv”.
Kommentarer
- Ikke direkte hvad du spørger, men hvad med bare at trykke på
ctrl+d
flere gange? - @UlrichDangel Jeg har aldrig brugt det før, men også en hurtig måde at komme hurtigt ud af forbindelser på.
- Er du virkelig rede til ssh-sessioner 5 til 10 niveauer dybt? Er du klar over, at ‘ opretter en indviklet tunnel, der spretter alle pakker i din ssh-session gennem alle disse værter? Kunne du få problemet til at forsvinde ved simpelthen ikke at indlejre ssh-sessioner?
- @ jw013 Nej, det vidste jeg ikke, men det giver mening. Ærligt talt var 5-10 niveauer en overdrivelse, men jeg forsøgte at illustrere mit spørgsmål om ” hvordan man rent ud af Putty i et øjeblik. ”
Svar
Prøv at bruge ssh
forbindelsesafslutningssekvens.
I ssh
-sessionen skal du indtaste ~.
(tildepunkt). Du kan ikke se tegnene, når du skriver dem, men sessionen afsluttes med det samme.
$ ~. $ Connection to me.myhost.com closed.
Fra 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).
Kommentarer
Svar
Bare tryk på Ctrl D , så logger du dig derude for at holde ctrl nede og tryk på “d”, indtil vinduet forsvinder.
Kommentarer / h3>
- Desværre fungerer dette ikke ‘ t universelt. Enhver session, der kører en editor eller et andet fuldskærmsværktøj, ignorerer sandsynligvis
EOT
. Og selv bash
ignorerer det midt på en kommandolinje. Prøv det selv: skriv et enkelt bogstav, og prøv Ctrl-D
.
- Hvad gør Ctrl + D, det vil sige, at det findes sikkert eller bare dræber processen?
- Det kommer sikkert ud. Det er en shell-genvej, der er den samme som at skrive ‘ exit ‘ og trykke på enter.
- Faktisk min ( windows git bash & ubuntu bash) udsteder en
logout
.
- ja, jeg tror exit også kalder logout som ssh forbindelser har tendens til ikke at være login-sessioner.
EOT
. Og selv bash
ignorerer det midt på en kommandolinje. Prøv det selv: skriv et enkelt bogstav, og prøv Ctrl-D
. logout
. Svar
Luk blot PuTTY. ( Alt + F4 som standard IIRC.)
Svar
En anden måde er at lave function
til ssh
:
function ssh(){ /usr/bin/ssh $@ ; exit ; }
Desværre vil det også altid lukke forbindelsen og logge ud fra konsollen, når du vil arbejde på det eksterne system.
Bemærk, at du har brug for at gøre en sådan funktion på alle dine servere, ellers fungerer dette hack ikke . Btw kan du altid sætte funktion i ~ / .bashrc eller ~ /. Uanset_skal_du_brug_rc.
Det ser lidt snavset hack ud sammenlignet med hele vejen.
Kommentarer
-
function
er ikke POSIX – fjern bare nøgleordet, og du skal citere$@
ordentligt, ellers bliver dine argumenter videregivet efter opdeling af ord (dårlig).
Svar
Eller du kan bruge exec
til at erstatte din shell-proces med ssh
når du hopper til en anden vært:
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 niveauer dybt er ikke smuk, da trafikken vil passere gennem alle de andre servere. På grund af det anbefaler jeg ikke bare at dræbe PuTTY eller ssh (~.), Da dette (afhængigt af hvad du gør) kan resultere i forældreløse processer på serverne.
Bedre at prøve og være mindre ” doven “. Højreklik på puttys titellinje gør det hurtigt at åbne en ny session. Hvis du har en” standardserver “og accepterer et spring fra det, er” Duplicate Session “-funktionen meget nyttig. Især når du bruger pubkey-godkendelse.
Svar
Hvis du ikke har noget imod at lave lidt scripting, kan du gøre dette.
Script: myssh .sh
#!/bin/bash ssh $1 if [ $? -eq 5 ]; then exit 5 fi
Ring via punktkommandoen:
$ . myssh [email protected]
Hvis du vil afslut et niveau:
$ exit
Hvis du vil afslutte alle:
$ exit 5
Kommentarer
- Selvfølgelig ville du have kopieret den til enhver computer, som du nogensinde kan ssh fra. Ville det ikke ‘ være lettere at bare definere en skalfunktion kaldet ssh? Det ville undgå den foregående periode osv.
Svar
At skrive logout i kitteterminalvinduet gør det til mig:
richard@forevermore:~ > logout
Lukker ssh-forbindelsen og afslutter kitteapplikationen.
Kommentarer
- Jeg tror, at du ikke ‘ ikke læste spørgsmålet korrekt. OP gør
ssh host1
, og derefter, frahost1
, gørssh host8
. På det tidspunkt ville enlogout
gøre det samme somexit
kommandoen, de allerede kender – gå ud afhost8
og læg dem tilbage ihost1
. - Okay, jeg ser, min dårlige.
exitall
. Nu spørger jeg ‘ for alt for meget :). Jeg prøvede et par ting i~/.bashrc
men fik-bash: ~.: command not found
. Jeg formoder, at bash ser det som en streng og ikke en escape-sekvens, der kommer direkte fra tastaturet.ctrl+d
-løsningen, men dette svarer på mit spørgsmål mere direkte. Tak alle.~.
, det ‘ håndteres afssh
selv .ssh
-klienten har brug for denne teknik, fordi den ‘ s CLI. PuTTY er en GUI-applikation, og der er langt mere brugervenlige måder at gøre dette på en GUI.