Comment puis-je avoir plusieurs sessions de terminal via une seule connexion SSH?

21

J'ai une édition de serveur Ubuntu en cours d'exécution et je peux SSH dedans pour effectuer diverses tâches. Ce que j'aimerais, c'est la possibilité de SSH dans mon serveur lancer une application serveur, puis basculer vers une autre session "virtuelle" (avec dans la même instance SSH) et exécuter des appels clients contre le service. Lorsque je démarre le service, c'est un appel bloquant, donc je ne peux pas exécuter d'appels clients contre lui sans lancer une autre session SSH.

J'espérais qu'il y aurait un moyen plus lisse, quelque chose comme l'interface utilisateur le fait avec les bureaux virtuels.

JPrescottSanders
la source

Réponses:

24

Ce que vous voulez utiliser, c'est un écran ou encore mieux un wrapper convivial autour de l'écran appelé byobu.

L'écran vous permet d'exécuter plusieurs sessions de terminal virtuel dans la même session ssh. Un tutoriel et des pages d'aide sont disponibles.

byobu est un wrapper qui permet d'ouvrir facilement de nouveaux écrans avec une simple touche de fonction au lieu d'une combinaison de touches de ctrl-a. Il affiche également une ligne d'état avec tous les terminaux virtuels ouverts qui peuvent être nommés.

Une autre fonctionnalité intéressante est le fait que tout votre écran peut rester en place pendant que votre connexion ssh est déconnectée. Vous vous connectez à nouveau via ssh et appelez byobu et tout est comme avant.

Enfin des captures d' écran de byobu.

txwikinger
la source
5

L'écran GNU est la réponse que vous cherchiez - mais cela ressemble beaucoup à Vi. Vous avez beaucoup appris sur les commandes pour configurer un environnement d'écran réussi. Voici quelques trucs pour commencer. Tout d'abord, vous voudrez que cette .screenrc http://paste.ubuntu.com/473764/ l' enregistre sur le serveur distant dans le dossier d'accueil de vos utilisateurs. Écran d'installation suivant sur la machine distante ( sudo apt-get install screen) Ensuite, vous voudrez le déclencher voici quelques commandes pour "lancer l'écran":

screen- C'est assez simple. Il démarre une nouvelle session d'écran screen -ls- Liste toutes les sessions d'écran actives. Oui, vous pouvez avoir plusieurs terminaux dans plusieurs écrans. SI CHARMANT.

Échantillon

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> - Cela reprendra une session d'écran détaché, IE: screen -x 16467

Une fois que vous êtes dans un écran (et que vous avez utilisé mon exemple de .screenrcfichier), vous verrez ce qui suit en bas:

(LOAD) 0$* bash

Quel est le chargement des serveurs et une liste de tous les "onglets de terminal" ouverts. Actuellement une seule fenêtre. Tapez quelque chose, puis appuyez sur cette combinaison de touches: Ctrl + Arelâchez, puis appuyez sur c. Ctrl + Aest la séquence d'échappement. Toutes les commandes sont démarrées avec cette combinaison. cest de créer un nouvel onglet. Vous remarquerez que le pied de page contient (LOAD) 0-$ bash 1$* bashun autre onglet ouvert et l'onglet actif est le numéro 1. Vous pouvez ouvrir un maximum de 60 onglets par session d'écran.

Si vous voulez quitter l'écran mais le laisser fonctionner, utilisez Ctrl + Aalors dqui détachera votre session. Enfin, vous pouvez fermer les onglets en utilisant Ctrl + Aalors kce qui tuera cet onglet (s'il se bloque) mais généralement vous pouvez simplement taper exitcomme si vous étiez dans un terminal et il fermera cet onglet.

Enfin, pour répertorier toutes les fenêtres ouvertes, vous pouvez taper Ctrl + Aensuite ".

Il y a toute une série d'options disponibles pour Screen que vous devriez verser sur le fichier man pour en savoir plus. Il y a quelques inconvénients. Vous ne pouvez pas utiliser votre barre de défilement dans l'écran, vous devez utiliser des contrôles de tampon pour revenir en arrière, mais ce qui précède est suffisant pour vous aider à voir si c'est une option viable. Une grande chose à ce sujet et quelque chose que j'ai beaucoup traité en tant qu'administrateur système - la connectivité réseau. Si votre réseau tombe en panne, vos opérations ne seront pas perdues! Puisque l'écran est en cours d'exécution sur le serveur. Il vous suffit alors de vous reconnecter via SSH screen -lset de vous screen -xreconnecter à votre session.

Marco Ceppi
la source
On dirait que txwikinger m'a battu avec des liens utiles!
Marco Ceppi
Tapez Ctrl + Aensuite ?pour accéder à la page d'aide. Toutes les commandes et raccourcis y sont répertoriés. Tapez Ctrl + Aensuite :pour utiliser l'une des commandes par nom, si vous vous souvenez du nom mais que vous avez oublié le raccourci clavier.
Dan
1

Si vous utilisez Ubuntu Server Edition, byobuc'est certainement votre meilleure option. Le Guide du serveur Ubuntu contient une documentation utile .

Il est généralement plus facile à apprendre et à utiliser que screenet il est installé par défaut.

jbowtie
la source
0

J'utilise Emacs, donc la configuration par défaut de l'écran me rend la vie difficile.

$ cat /home/cjac/.screenrc 

échapper ^ \

Essayez ça!

cjac
la source