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

  • Temmelig cool! Enhver måde at sætte i et alias eller funktion? Bare for at give det et let at huske navn som 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.
  • Jeg kan også lide ctrl+d -løsningen, men dette svarer på mit spørgsmål mere direkte. Tak alle.
  • @Banjer bash ser aldrig ~., det ‘ håndteres af ssh selv .
  • @Gilles gotcha, giver mening.
  • Og der er ‘ ingen garanti ee at PuTTY også gør dette. CLI 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.

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.

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, fra host1, gør ssh host8. På det tidspunkt ville en logout gøre det samme som exit kommandoen, de allerede kender – gå ud af host8 og læg dem tilbage i host1.
  • Okay, jeg ser, min dårlige.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *