Cosa posso fare quando la mia sessione SSH è bloccata?


109

A volte la mia sessione SSH nel terminale si blocca. Come posso uscire dalla sessione ssh e riconnettermi?

Risposte:


196

Digitare ~.(es. Tilde, punto) all'inizio di una riga. In altre parole, premere Enter, quindi ~, quindi .. (In alcune lingue, potrebbe essere necessario premere Shifto Altper inserire il ~carattere.)

In generale, il ~personaggio è un personaggio di escape in una sessione SSH quando lo si digita all'inizio di una riga. Digita Enterquindi ~?per visualizzare l'elenco dei comandi di escape. I più comuni sono

  • ~. per terminare la connessione
  • ~^Z(premere ~quindi Ctrl+ Z) per sospendere la connessione e digitare un comando localmente (eseguire il comando fgper tornare alla sessione SSH)

Se vuoi una tilde all'inizio di una riga, premi ~due volte.


7

Tutto ciò che devi fare per uscire da una sessione ssh è digitare exital prompt.

Prova a inserire Shift+ `+.


2
Non accetta più l'input dell'utente, è letteralmente bloccato. Su Ubuntu c'è una combinazione di tasti che termina la sessione che puoi usare in casi come questi. Dopo un po 'la sessione terminerà dichiarando broken-pipema preferisco non aspettare.
— Kit Sunde

1
@Kit Ho corretto la mia risposta. Mi dispiace per quello. Non mi ero reso conto che intendevi una sessione SSH completamente bloccata.
— daviesgeek,

Di solito aspetto solo il timeout. Nonostante io sia a conoscenza di questi comandi, dimentico sempre che posso usarli per accelerare il processo di recupero della mia shell. Nota anche la risposta di @Gilles, potresti dover premere Invio / Invio una volta prima di ~. poter saperne di più nella manpage SSH (un po 'più a metà), e digitando: ~?in una sessione SSH attiva / connessa, potresti avere di nuovo premere invio una volta prima.
— Jason Salaz,

7

Se la sessione è sospesa e il prompt non risponde più, è possibile semplicemente terminare l'istanza Terminal e tutti i processi figlio associati a tale istanza, di cui la sessione ssh è una, dovrebbero essere eliminati.

Se vuoi davvero essere accurato anche se puoi aprire una nuova istanza di Terminal, cerca le sessioni ssh nell'elenco dei processi e uccidile tramite la riga di comando:

> ps -ef  |grep ssh
501  1332   142   0 20Dec11 ??         0:01.33 /usr/bin/ssh-agent -l
501 57172 57150   0  1:58pm ttys000    0:00.01 grep ssh
501 57139 57133   0  1:57pm ttys002    0:00.03 ssh -i/Users/ian/code/ec2-keys/id_rsa-gsg-keypair someuser@someinstance.amazonaws.com

> kill 57139

Se non funziona, prova:

> kill -9 57139

Non uccidere il ssh-agentprocesso.

Oppure puoi aprire Activity Monitor e cercare lì le sessioni e premere il pulsante di interruzione per loro:

Filtro di Activity Monitor per sessioni ssh


+1, questo è quello che faccio. Spesso quando ho lasciato una sessione in esecuzione, e poi o la connessione si interrompe accidentalmente o dormo il laptop, provoca il congelamento di ssh. Apro una nuova scheda della console e uccido il PID del processo ssh (o chiudo la scheda ssh e ne apro una nuova)
— halfer

L'uso della scorciatoia da tastiera funziona sul tuo Mac senza uccidere noiosamente il processo?
— Rafael Bugajewski,

1
Usa ~.. Vedi sopra.
— Snowcrash

0

~. funziona, anche se sembra essere completamente bloccato, interrompe la connessione ssh e puoi riavviarlo, ma nella mia tastiera devo premere Alt + ~ quindi lo spazio e quindi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.