web-dev-qa-db-fra.com

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

J'ai une édition de serveur Ubuntu en cours d'exécution et je peux utiliser SSH pour effectuer diverses tâches. Ce que j'aimerais, c’est que la capacité de SSH sur mon serveur lance une application serveur, puis passe à une autre session "virtuelle" (avec la même instance SSH) et exécute des appels clients sur le service. Lorsque je lance le service, il s’agit d’un appel bloquant. Par conséquent, je ne peux pas exécuter d’appels clients sans déclencher une autre session SSH.

J'espérais qu'il y aurait peut-être un moyen plus simple, comme l'interface utilisateur le fait avec les bureaux virtuels.

21
JPrescottSanders

Ce que vous voulez utiliser est un écran ou mieux encore un wrapper convivial appelé byobu.

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

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

Une autre fonctionnalité intéressante est le fait que tout votre écran peut rester en place tant que votre connexion SSH est déconnectée. Vous venez juste de vous connecter à nouveau via ssh et d’appeler byobu et tout est comme avant.

Enfin quelques screenshots de Byobu.

24
txwikinger

Écran GN est la réponse que vous cherchiez - mais cela ressemble beaucoup à Vi. Vous avez beaucoup appris sur les commandes pour configurer un environnement Screen réussi. Voici quelques trucs pour vous aider à démarrer. Tout d’abord, vous voudrez que ce .screenrchttp://paste.ubuntu.com/473764/ enregistrez-le sur le serveur distant dans le dossier de base de vos utilisateurs. Écran d'installation suivant sur la machine distante (Sudo apt-get install screen) Ensuite, vous voudrez le lancer. Voici quelques commandes pour "ouvrir l'écran":

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

É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> - Ceci 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 fichier .screenrc), les éléments suivants apparaissent en bas:

(LOAD) 0$* bash

Quelle est la charge 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 + A release, puis appuyez sur cname__. Ctrl + A est la séquence d'échappement. Toutes les commandes sont lancées avec cette combinaison. cest créer un nouvel onglet. Vous remarquerez que le pied de page a (LOAD) 0-$ bash 1$* bash, ce qui indique qu’un autre onglet est ouvert et que l’onglet actif est le numéro 1. Vous pouvez ouvrir un maximum de 60 onglets par session écran.

Si vous voulez quitter screen mais le laisser fonctionner, utilisez Ctrl + A puis dqui détachera votre session. Enfin, vous pouvez fermer les onglets en utilisant Ctrl + A puis kname__, ce qui supprimera cet onglet (s'il se verrouille), mais vous pouvez généralement taper exitcomme si vous étiez dans un terminal et le fermer.

Enfin, pour lister toutes les fenêtres ouvertes, vous pouvez taper Ctrl + A puis ".

Il y a toute une série d'options disponibles pour Screen que vous devriez utiliser pour plus de détails dans le fichier man. Il y a quelques inconvénients. Vous ne pouvez pas utiliser votre barre de défilement dans Screen, vous devez utiliser des contrôles de mémoire tampon pour annuler, mais la procédure ci-dessus est suffisante pour vous permettre de voir si cette option est viable. Une bonne chose à propos de cela et une chose que j'ai beaucoup traitée en tant qu'administrateur système - la connectivité réseau. Si votre réseau se déconnecte, vos opérations ne seront pas perdues! Depuis l'écran est en cours d'exécution sur le serveur. Vous devez simplement vous reconnecter via SSH, puis screen -ls et screen -x dans votre session.

5
Marco Ceppi

Si vous utilisez Ubuntu Server Edition, byobu est définitivement votre meilleure option. Le Guide du serveur Ubuntu contient ne documentation utile .

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

1
jbowtie

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

$ cat /home/cjac/.screenrc 

échapper ^ \

Essayez ça!

0
cjac