Come posso avere più sessioni terminali attraverso una singola connessione SSH?


21

Ho un'edizione server Ubuntu in esecuzione e posso SSH in esso per eseguire varie attività. Quello che mi piacerebbe è la capacità di SSH nel mio server di avviare un'applicazione server e quindi passare a un'altra sessione "virtuale" (con nella stessa istanza SSH) ed eseguire chiamate client sul servizio. Quando avvio il servizio è una chiamata bloccante, quindi non posso eseguire chiamate client contro di esso senza avviare un'altra sessione SSH.

Speravo che ci potesse essere un modo più semplice, come fa l'interfaccia utente con i desktop virtuali.

Risposte:


24

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

Lo schermo 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 in piedi mentre la connessione ssh è disconnessa. Ti connetti di nuovo via ssh e chiama byobu e tutto è come prima.

Finalmente alcuni screenshot di Byobu.


5

GNU Screen è la risposta che stavi cercando, ma è molto simile a Vi. Hai molta conoscenza dei comandi per configurare un ambiente schermo di successo. Ecco alcune cose per iniziare. Prima di tutto vorrai questo .screenrc http://paste.ubuntu.com/473764/ salvarlo sul server remoto nella cartella home degli utenti. Schermata di installazione successiva sul computer remoto ( sudo apt-get install screen) Successivamente, è necessario accenderla qui sono alcuni comandi per "schermata di avvio":

screen- È abbastanza semplice. Avvia una nuova sessione dello schermo screen -ls- Elenca tutte le sessioni dello schermo attive. Sì, puoi avere più terminali all'interno di più schermi. COSÌ DOLCE.

Campione

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> - Questo riprenderà una sessione di schermo indipendente, IE: screen -x 16467

Una volta che sei in una schermata (e hai impiegato il mio .screenrcfile di esempio ) vedrai quanto segue in basso:

(LOAD) 0$* bash

Qual è il carico dei server e un elenco di tutte le "schede terminali" aperte. Attualmente solo una finestra. Digita qualcosa quindi premi questa combinazione di tasti: Ctrl + Arilascia, quindi premi c. Ctrl + Aè la sequenza di escape. Tutti i comandi vengono avviati con questa combinazione. cè creare una nuova scheda. Noterai il piè di pagina (LOAD) 0-$ bash 1$* bashche mostra che c'è un'altra scheda aperta e la scheda attiva è il numero 1. Puoi aprire un massimo di 60 schede per sessione dello schermo.

Se si vuole uscire dallo schermo, ma mantenere in esecuzione uso Ctrl + Aallora dche staccare la sessione. Finalmente puoi chiudere le schede usando Ctrl + Aallora kche ucciderà quella scheda (se si blocca) ma in genere puoi semplicemente digitare exitcome se fossi in un terminale e chiuderà quella scheda.

Infine per elencare tutte le finestre aperte è possibile digitare Ctrl + Aquindi ".

Ci sono molte opzioni disponibili per Screen che dovresti versare sul file man per ulteriori informazioni. Ci sono alcuni svantaggi. Non è possibile utilizzare la barra di scorrimento nella schermata, è necessario utilizzare i controlli del buffer per ripristinare, tuttavia quanto sopra è sufficiente per iniziare a vedere se questa è un'opzione praticabile. Una cosa grandiosa di questo e qualcosa di cui mi sono occupato molto come amministratore di sistema: la connettività di rete. Se la rete si interrompe, le operazioni non andranno perse! Poiché lo schermo è in esecuzione sul server. Devi semplicemente accedere nuovamente tramite SSH screen -lse poi screen -xtornare alla sessione.


Sembra che txwikinger mi abbia battuto con alcuni link utili!
Marco Ceppi

Digita Ctrl + Aquindi ?per andare alla pagina di aiuto. Tutti i comandi e le scorciatoie sono elencati lì. Digitare Ctrl + Aquindi :per utilizzare uno dei comandi per nome, se ricordare il nome ma si è dimenticato il tasto di scelta rapida.
Dan,

1

Se stai usando Ubuntu Server Edition byobuè sicuramente l'opzione migliore. La Guida del server Ubuntu ha una documentazione utile .

È generalmente più facile da imparare e da usare rispetto a screened è installato di default.


0

Uso Emacs, quindi la configurazione predefinita dello schermo mi rende la vita difficile.

$ cat /home/cjac/.screenrc 

fuga ^ \

Prova questo!

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.