Posso connettermi o visualizzare sessioni ssh abbandonate?


14

Ho un'istanza virtuale di redhat in esecuzione che posso sshfare da qualsiasi host sulla rete aziendale. La mia sshsessione è stata interrotta durante l'esecuzione di alcuni script che potrebbero aver causato o meno la disconnessione. Il whocomando localmente elenca ancora la connessione interrotta. Riconnettersi con sshinizia una nuova sessione. C'è un modo per connettersi alla sessione originale? Altrimenti posso ucciderlo? Ho accesso root e fisico. Non stavo usando lo schermo nella sessione originale.

Risposte:


11

Vuoi usare lo schermo sul telecomando e poi quando torni indietro ti riconnetti a quell'istanza dello schermo.

ma no, non puoi riconnetterti a una sessione ssh di per sé, devi usare lo schermo (o qualcos'altro come questo per facilitare quello).

Guarda questa domanda per almeno un'altra opzione e alcune differenze tra essa (tmux) e lo schermo. dopo aver letto la risposta a quella domanda ... direi che tmux è meglio

oh e sì, potresti killfermare il processo (incluso il bash biforcuto), potresti provare skilla uccidere l'utente per nome, ma sospetto che quell'utente sia root ... potrebbe provare a uccidere cose che non può.

la risposta è stata aggiornata alcune volte


4

Per impostazione predefinita, non è possibile riconnettersi a una sessione ssh abbandonata. Tuttavia, è possibile impostare i processi all'interno di una sessione ssh, a cui è possibile riconnettersi dopo aver ristabilito una nuova sessione ssh.

Quello che vuoi usare è screen o ancora meglio un wrapper intuitivo attorno allo schermo chiamato byobu.

La schermata consente di eseguire più sessioni di terminale virtuale nella stessa sessione ssh. Sono disponibili un tutorial e pagine di aiuto .

byobu è un wrapper che consente di aprire facilmente nuove schermate con un semplice tasto funzione anziché la combinazione di tasti da ctrl-a. Mostra anche una linea di stato con tutti i terminali virtuali aperti che possono essere nominati.

Un'altra caratteristica interessante è il fatto che tutto lo schermo può rimanere attivo mentre la connessione ssh è disconnessa. Ti connetti nuovamente tramite ssh e chiama byobu e tutto è come prima.

Finalmente alcuni screenshot di Byobu.


3

Come accennato, lo schermo è probabilmente la soluzione migliore. Se / quando la sessione viene interrotta, continuerà a funzionare. Digita "screen -list" per visualizzare le sessioni disponibili e "screen -r" con la sessione desiderata. Un piccolo suggerimento, è possibile completare con tabulazione la stringa di sessione anziché copiare / incollare il tutto.

Tuttavia, lo schermo può essere fastidioso. Nel mio client, non puoi facilmente scorrere verso l'alto per vedere la cronologia nella console. Agisce in modo leggermente diverso da quello che ti aspetteresti. Se tutto ciò che vuoi fare è assicurarti che i tuoi proc di lunga data non vengano uccisi, usa 'nohup'. Impedirà l'arresto del tuo proc quando si perde la connessione. Assicurati di inviare l'output proc a un file se vuoi monitorarlo, comunque. Inoltre, se hai uno script bash, penso che devi chiamare esplicitamente 'bash' davanti a nohup. Un esempio...

nohup bash ./myscript.sh> output.log 2> & 1 &

Ciò significa nohup, per evitare di uccidere il proc, bash per chiamare esplicitamente bash se hai script specifici nel tuo script, il tuo script chiamato 'myscript.sh' nella directory corrente, output.log come file per inviare sia std che errore fuori e '&' alla fine per eseguire il proc in background.

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.