Existuje způsob, jak ze všech připojení SSH vycouvat a zavřít PuTTY v „jedné střele“? Pracuji v systému Windows 7 a používám PuTTY k SSH k různým hostitelům Linuxu.

Příklad způsobu, jakým sám pracuji:

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. 

Dle výše, existuje způsob, jak se dostat z host8 na zavření PuTTY na jeden výstřel? Někdy se ocitnu v hloubce až 5 nebo 10 hostitelů. Uvědomuji si, že můžu kliknutím na X zavřít okno PuTTY, ale rád bych se ujistil, že se moje SSH spojení správně uzavře pomocí příkazu exit. Uvědomuji si také, že žádám o tipy, jak zvýšit lenost. Odpíšu to pouze jako „jak mohu být efektivnější“.

Komentáře

  • Ne přímo, na co se ptáte, ale co takhle několikrát stisknout ctrl+d?
  • @UlrichDangel To jsem nikdy předtím nepoužíval, ale také rychlý způsob rychlého zpětného připojení.
  • Opravdu vnořujete relace ssh do hloubky 5 až 10 úrovní? Uvědomujete si, že ‚ vytváří spletitý tunel, který odráží všechny pakety ve vaší relaci ssh přes všechny tyto hostitele? Mohli byste problém odstranit jednoduše tím, že nebudete vnořovat relace ssh?
  • @ jw013 Ne, neuvědomil jsem si to, ale dává to smysl. Upřímně řečeno, 5-10 úrovní bylo přehnané, ale snažil jsem se ilustrovat mou otázku “ jak čistě opustit Putty jedním tahem. “

Odpověď

Zkuste použít ssh úniková sekvence ukončení připojení.

V relaci ssh zadejte ~. (vlnovka). Při psaní znaky neuvidíte, ale relace bude okamžitě ukončena.

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

Od 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). 

Komentáře

  • Docela v pohodě! Jakýkoli způsob vložení ~. do aliasu nebo funkce? Jen pro snadné pojmenování, jako je exitall. Nyní se ‚ ptám příliš mnoho :). Zkoušel jsem několik věcí v ~/.bashrc, ale získejte -bash: ~.: command not found. Myslím, že bash to vidí jako řetězec a ne úniková sekvence přicházející přímo z klávesnice.
  • Líbí se mi také řešení ctrl+d, ale toto odpovídá na mou otázku příměji. Díky všem.
  • @Banjer bash nikdy nevidí ~., ‚ jej zpracovává ssh .
  • @Gilles gotcha, dává smysl.
  • A ‚ neexistuje žádná záruka To znamená, že to také dělá PuTTY. Klient CLI ssh tuto techniku potřebuje, protože ‚ s CLI. PuTTY je aplikace s grafickým uživatelským rozhraním a existuje mnohem více uživatelsky přívětivých způsobů, jak to udělat v grafickém uživatelském rozhraní.

Odpovědět

Stačí stisknout Ctrl D a odhlásí vás tam pro podržení ctrl a stiskněte „d“, dokud okno nezmizí.

Komentáře

  • Je smutné, že to ‚ nefunguje univerzálně. Jakákoli relace spuštěná v editoru nebo jiném nástroji na celou obrazovku pravděpodobně EOT bude ignorovat. A dokonce i bash jej uprostřed příkazového řádku ignoruje. Vyzkoušejte sami: zadejte jedno písmeno a zkuste Ctrl-D.
  • Co dělá Ctrl + D, myslím tím, že bezpečně existuje nebo jen zabije proces?
  • Bezpečně vystupuje. Jedná se o zástupce prostředí, který je stejný jako psaní ‚ exit ‚ a stisknutí klávesy enter.
  • Vlastně moje ( windows git bash & ubuntu bash) vydá logout.
  • ano, věřím, že exit také volá odhlášení jako ssh připojení nemají tendenci být relacemi přihlášení.

Odpověď

Jednoduše zavřete PuTTY. ( Alt + F4 ve výchozím nastavení IIRC.)

Odpověď

Další možností je vytvořit function pro ssh:

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

Bohužel také vždy ukončí připojení a odhlášení z konzoly po dokončení práce na vzdáleném systému.

Všimněte si, že tuto funkci musíte provést na všech svých serverech, jinak tento hack nebude fungovat . Btw můžete vždy dát funkci do ~ / .bashrc nebo ~ / .whatever_shell_you_use_rc.

Vypadá to trochu špinavě, hack ve srovnání s úplným způsobem.

Komentáře

  • function není POSIX – stačí odstranit klíčové slovo a je třeba uvést $@ správně, jinak budou vaše argumenty předány po rozdělení slova (špatné).

Odpověď

Nebo můžete použít exec k nahrazení shell proces s ssh při přechodu na jiného hostitele:

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 úrovní hluboko není hezké, protože provoz projde všemi ostatními servery. Z tohoto důvodu nedoporučuji pouze zabít PuTTY nebo ssh (~.), Protože (v závislosti na tom, co děláte) by to mohlo mít za následek osiřelé procesy na serverech.

Lepší je pokusit se být méně “ líný „. Kliknutím pravým tlačítkem myši na záhlaví puttys je otevření nové relace rychlé. Pokud máte“ výchozí „server a přijmete od něj 1 skok, je funkce“ Duplicate Session „velmi užitečná. Zejména při použití autentizace pomocí pubkey.

Odpověď

Pokud vám nevadí trochu skriptovat, můžete to udělat.

Skript: myssh .sh

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

Volání pomocí příkazu dot:

$ . myssh [email protected] 

Pokud chcete opustit jednu úroveň:

$ exit 

Pokud chcete ukončit všechny:

$ exit 5 

komentáře

  • Samozřejmě byste jej zkopírovali do všech počítačů, ze kterých jste kdy mohli ssh. Nebylo by snadnější ‚ definovat funkci shellu ssh? Tím by se předešlo předcházejícímu období atd.

Odpověď

Psaní odhlášení v okně terminálu tmelu to dělá pro já:

richard@forevermore:~ > logout 

Ukončí připojení ssh a ukončí aplikaci Putty.

Komentáře

  • Věřím, že jste ‚ otázku nečetli správně. OP dělá ssh host1 a poté z host1 dělá ssh host8. V tom okamžiku by logout udělal totéž jako příkaz exit, který již znají – výstup z host8 a vložte je zpět do host1.
  • Dobře, chápu, špatně.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *