Finns det ett sätt att backa ut alla SSH-anslutningar och stänga PuTTY i ”one shot”? Jag arbetar i Windows 7 och använder PuTTY till SSH för olika Linux-värdar.

Ett exempel på hur jag arbetar:

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. 

Per ovan, något sätt att komma från host8 till att stänga PuTTY i ett skott? Ibland befinner jag mig upp till 5 eller 10 värdar djupt. Jag inser att jag kan klicka på X för att stänga PuTTY-fönstret, men jag vill se till att mina SSH-anslutningar stängs ordentligt med hjälp av kommandot exit. Jag inser också att jag frågar efter tips om hur man ökar latskapet. Jag skriver bara av det som ”hur kan jag bli effektivare”.

Kommentarer

  • Inte direkt vad du frågar men vad sägs om att bara trycka på ctrl+d flera gånger?
  • @UlrichDangel Jag har aldrig använt det förut, men också en snabbt sätt att snabbt koppla ur anslutningar.
  • Är du verkligen häckande ssh-sessioner 5 till 10 nivåer djupa? Inser du att ’ skapar en invecklad tunnel som studsar alla paket i din ssh-session genom alla dessa värdar? Kan du få problemet att försvinna genom att helt enkelt inte hysa ssh-sessioner?
  • @ jw013 Nej, det visste jag inte, men det är vettigt. Ärligt talat var 5-10 nivåer en överdrift, men jag försökte illustrera min fråga om ” hur man rent ut ur Putty i ett slag. ”

Svar

Försök använda ssh anslutningsslutningssekvens.

I ssh -sessionen anger du ~. (tildepunkt). Du kommer inte att se tecknen när du skriver dem, men sessionen avslutas omedelbart.

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

Från 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

  • Ganska coolt! Något sätt att uttrycka ~. till ett alias eller funktion? Bara för att ge det ett lätt att komma ihåg namn som exitall. Nu frågar jag ’ för alldeles för mycket :). Jag försökte några saker i ~/.bashrc men får -bash: ~.: command not found. Jag antar att bash ser det som en sträng och inte en flyktningssekvens som kommer direkt från tangentbordet.
  • Jag gillar ctrl+d -lösningen också, men detta svarar på min fråga mer direkt. Tack alla.
  • @Banjer bash ser aldrig ~., det ’ hanteras av ssh själv .
  • @Gilles gotcha, är vettigt.
  • Och det finns ’ ingen garanti ee att PuTTY också gör detta. CLI ssh -klienten behöver denna teknik eftersom den ’ s CLI. PuTTY är ett GUI-program och det finns mycket mer användarvänliga sätt att göra det här på ett GUI.

Svar

Tryck bara på Ctrl D så loggar du ut där för att hålla ctrl och trycker på ”d” tills fönstret försvinner.

Kommentarer

  • Tyvärr fungerar det inte ’ t universellt. Varje session som kör en redigerare eller annat helskärmsverktyg kommer sannolikt att ignorera EOT. Och även bash ignorerar det mitt i en kommandorad. Prova själv: skriv en bokstav och försök Ctrl-D.
  • Vad gör Ctrl + D, det vill säga är det säkert existerar eller bara dödar processen?
  • Det går säkert ut. Det är en skalgenväg som är samma som att skriva ’ avsluta ’ och tryck på enter.
  • Egentligen min ( windows git bash & ubuntu bash) utfärdar en logout.
  • ja, jag tror att exit också kallar utloggning som ssh anslutningar brukar inte vara inloggningssessioner.

Svar

Stäng bara PuTTY. ( Alt + F4 som standard IIRC.)

Svar

Ett annat sätt är att göra function för ssh:

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

Tyvärr kommer det också alltid att stänga anslutningen och utloggningen från konsolen när du kommer att slutföra arbetet på fjärrsystemet.

Observera att du måste göra en sådan funktion på alla dina servrar, annars fungerar inte detta hack. . Btw du kan alltid sätta funktion i ~ / .bashrc eller ~ / .whatever_shell_you_use_rc.

Det ser lite smutsigt hack ut jämfört med hela vägen.

Kommentarer

  • function är inte POSIX – ta bara bort nyckelordet och du måste citera $@ ordentligt, annars kommer dina argument att skickas efter orddelning (dåligt).

Svar

Eller så kan du använda exec för att ersätta din skalprocess med ssh när du hoppar till en annan värd:

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 nivåer djup är inte vacker, eftersom trafiken kommer att passera genom alla andra servrar. På grund av detta rekommenderar jag inte att bara döda PuTTY eller ssh (~.), Eftersom (beroende på vad du gör) kan detta leda till föräldralösa processer på servrarna.

Bättre att försöka bli mindre ” lat. ”Högerklicka på puttys rubrikfält gör det snabbt att öppna en ny session. Om du har en” standardserver ”och accepterar ett hopp från det är funktionen” Duplicera session ”mycket användbar. Speciellt när du använder pubkey-autentisering.

Svar

Om du inte har något emot att göra lite skript kan du göra det.

Skript: myssh .sh

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

Ring via punktkommandot:

$ . myssh [email protected] 

Om du vill avsluta en nivå:

$ exit 

Om du vill avsluta alla:

$ exit 5 

Kommentarer

  • Naturligtvis skulle du ha kopierat den till alla datorer som du någonsin kan ssh från. Skulle det inte heller vara ’ att bara definiera en skalfunktion som heter ssh? Det skulle undvika föregående period etc.

Svar

Att skriva utloggning i kittterminalfönstret gör det för mig:

richard@forevermore:~ > logout 

Stänger ssh-anslutningen och avslutar kittapplikationen.

Kommentarer

  • Jag tror att du inte ’ inte läste frågan korrekt. OP gör ssh host1, och sedan, från host1, gör ssh host8. Vid den punkten skulle en logout göra samma sak som exit kommandot de redan känner till – gå ut från host8 och sätt tillbaka dem i host1.
  • Ok, jag förstår, dåligt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *