it-swarm.it

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

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.

21

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. A tutorial e pagine della guida sono disponibili.

byob è un wrapper che consente di aprire facilmente nuove schermate con un semplice tasto funzione invece della combinazione di tasti da ctrl-a. Mostra anche una riga 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 chiami byobu e tutto è come prima.

Finalmente alcuni schermate di byobu.

24
txwikinger

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 .screenrchttp://paste.ubuntu.com/473764/ salvalo sul server remoto nella cartella home degli utenti. Schermata di installazione successiva sul computer remoto (Sudo apt-get install screen) Quindi, ti consigliamo di accenderlo qui sono alcuni comandi per "accendere lo schermo":

screen - Questo è piuttosto 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. SO SWEET.

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 utilizzato il mio file .screenrc 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 + A rilascia, quindi premi c. Ctrl + A è la sequenza di escape. Tutti i comandi vengono avviati con questa combinazione. c è creare una nuova scheda. Noterai che il piè di pagina ha (LOAD) 0-$ bash 1$* bash che 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 desidera uscire dalla schermata ma mantenerla in esecuzione, utilizzare Ctrl + A quindi d che interromperà la sessione. Infine puoi chiudere le schede usando Ctrl + A poi k che ucciderà quella scheda (se si blocca) ma in genere puoi semplicemente digitare exit come se fossi in un terminale e chiudi quella scheda.

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

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, quindi screen -ls e screen -x nella tua sessione.

5
Marco Ceppi

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

In genere è più facile da imparare e usare rispetto a screen ed è installato di default.

1
jbowtie

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

$ cat /home/cjac/.screenrc 

fuga ^ \

Prova questo!

0
cjac