Esiste un modo per uscire da tutte le connessioni SSH e chiudere PuTTY in “one shot”? Lavoro con Windows 7 e utilizzo PuTTY to SSH su vari host Linux.

Un esempio del modo in cui mi trovo a lavorare:

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. 

Come sopra, un modo per passare dallhost8 alla chiusura di PuTTY in un colpo solo? A volte mi trovo fino a 5 o 10 host in profondità. Mi rendo conto di poter fare clic sulla X per chiudere la finestra PuTTY, ma mi piace assicurarmi che le mie connessioni SSH vengano chiuse correttamente utilizzando il comando exit. Mi rendo anche conto che sto chiedendo consigli su come aumentare la pigrizia. Lo scriverò semplicemente come “come posso essere più efficiente”.

Commenti

  • Non direttamente quello che stai chiedendo, ma che ne dici di premere ctrl+d più volte?
  • @UlrichDangel Non lho mai usato prima, ma anche un modo rapido per uscire rapidamente dalle connessioni.
  • Stai davvero annidando sessioni ssh da 5 a 10 livelli di profondità? Ti rendi conto che ‘ sta creando un tunnel convoluto che rimbalza tutti i pacchetti nella tua sessione ssh attraverso tutti quegli host? Potresti risolvere il problema semplicemente non annidando le sessioni ssh?
  • @ jw013 No, non me ne rendevo conto, ma ha senso. Onestamente, 5-10 livelli erano unesagerazione, ma stavo cercando di illustrare la mia domanda su ” come uscire in modo pulito da Putty in un colpo solo. ”

Risposta

Prova a utilizzare ssh sequenza di escape della terminazione della connessione.

Nella ssh sessione, inserisci ~. (punto tilde). Non vedrai i caratteri quando li digiti, ma la sessione terminerà immediatamente.

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

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

Commenti

  • Fantastico! Qualsiasi modo di mettere ~. in un alias o una funzione? Solo per dargli un nome facile da ricordare come exitall. Ora ‘ sto chiedendo per troppo :). Ho provato alcune cose in ~/.bashrc ma ho ottenuto -bash: ~.: command not found. Suppongo che bash lo veda come una stringa e non una sequenza di escape proveniente direttamente dalla tastiera.
  • Mi piace anche la soluzione ctrl+d, ma questa risponde alla mia domanda in modo più diretto. Grazie a tutti.
  • @Banjer bash non vede mai ~., ‘ è gestito da ssh stesso .
  • @Gilles gotcha, ha senso.
  • E non ‘ nessuna garanzia ee PuTTY fa anche questo. Il client ssh della CLI necessita di questa tecnica perché è la ‘ CLI. PuTTY è unapplicazione GUI e ci sono modi molto più intuitivi per fare queste cose su una GUI.

Risposta

Basta premere Ctrl D e ti disconnetterà da lì per tenere premuto ctrl e premere “d” finché la finestra non scompare.

Commenti

  • Purtroppo, ‘ non funziona universalmente. È probabile che qualsiasi sessione che esegue un editor o un altro strumento a schermo intero ignori EOT. E anche bash lo ignorerà nel mezzo di una riga di comando. Provalo tu stesso: digita una singola lettera e prova Ctrl-D.
  • Cosa fa Ctrl + D, voglio dire che esiste in modo sicuro o semplicemente uccide il processo?
  • Esce in modo sicuro. È una scorciatoia della shell che equivale a digitare ‘ exit ‘ e premere Invio.
  • In realtà il mio ( windows git bash & ubuntu bash) invia un logout.
  • sì, credo che exit richiami anche il logout come ssh le connessioni tendono a non essere sessioni di accesso.

Risposta

Chiudi semplicemente PuTTY. ( Alt + F4 per impostazione predefinita IIRC.)

Risposta

Un altro modo è creare function per ssh:

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

Sfortunatamente chiuderà sempre la connessione e si disconnetterà dalla console dopo che avrai finito di lavorare sul sistema remoto.

Nota che devi rendere tale funzione su tutti i tuoi server, altrimenti questo hack non funzionerà . A proposito, puoi sempre mettere la funzione in ~ / .bashrc o ~ / .wwhat_shell_you_use_rc.

Sembra un trucco un po sporco se paragonato a quello di uther.

Commenti

  • function non è POSIX: è sufficiente rimuovere la parola chiave e citare $@ correttamente, o i tuoi argomenti verranno passati dopo la divisione delle parole (cattiva).

Risposta

Oppure puoi utilizzare exec per sostituire processo di shell con ssh quando si passa a un altro 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 livelli di profondità non sono piacevoli, poiché il traffico passerà attraverso tutti gli altri server. Per questo motivo non consiglio di uccidere PuTTY o ssh (~.), Poiché (a seconda di cosa fai) questo potrebbe portare a processi orfani sui server.

Meglio provare ad essere meno ” pigro “. Fare clic con il pulsante destro del mouse sulla barra del titolo degli stucchi rende rapida lapertura di una nuova sessione. Se si dispone di un server” predefinito “e si accetta 1 salto da quello, la funzione” Duplica sessione “è molto utile. Soprattutto quando si utilizza lautenticazione pubkey.

Risposta

Se non ti dispiace fare un po di script, puoi farlo.

Script: myssh .sh

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

Chiama tramite il comando punto:

$ . myssh [email protected] 

Se vuoi esci da un livello:

$ exit 

Se desideri uscire da tutto:

$ exit 5 

Commenti

  • Ovviamente, dovresti copiarlo su ogni computer da cui potresti usare ssh. Inoltre, ‘ non sarebbe più semplice definire una funzione di shell chiamata ssh? Ciò eviterebbe il periodo precedente, ecc.

Risposta

Digitare logout nella finestra del terminale putty lo fa per me:

richard@forevermore:~ > logout 

Chiude la connessione ssh e chiude lapplicazione Putty.

Commenti

  • Credo che ‘ non abbia letto correttamente la domanda. OP fa ssh host1, quindi, da host1, fa ssh host8. A quel punto un logout farebbe la stessa cosa del comando exit che già conoscono: esci da host8 e inseriscili di nuovo in host1.
  • Ok, ho capito, colpa mia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *