¿Cómo puedo tener múltiples sesiones de terminal a través de una sola conexión SSH?

21

Tengo una edición de servidor Ubuntu ejecutándose y puedo usar SSH para realizar varias tareas. Lo que me gustaría es la capacidad de SSH en mi servidor para iniciar una aplicación de servidor y luego cambiar a otra sesión "virtual" (con la misma instancia de SSH) y ejecutar llamadas de clientes contra el servicio. Cuando inicio el servicio, es una llamada de bloqueo, por lo que no puedo ejecutar llamadas de clientes contra él sin activar otra sesión SSH.

Esperaba que hubiera una forma más ingeniosa, algo como lo hace la interfaz de usuario con los escritorios virtuales.

JPrescottSanders
fuente

Respuestas:

24

Lo que desea usar es la pantalla o, mejor aún, un contenedor alrededor de la pantalla fácil de usar llamado byobu.

Screen le permite ejecutar múltiples sesiones de terminal virtual en la misma sesión ssh. Un tutorial y páginas de ayuda están disponibles.

byobu es un contenedor que permite abrir fácilmente nuevas pantallas con una simple tecla de función en lugar de la combinación de teclas de ctrl-a. También muestra una línea de estado con todos los terminales virtuales abiertos que se pueden nombrar.

Otra característica interesante es el hecho de que toda su pantalla puede permanecer activa mientras su conexión ssh está desconectada. Simplemente se conecta de nuevo a través de ssh y llama a byobu y todo es como antes.

Por fin algunas capturas de pantalla de byobu.

txwikinger
fuente
5

GNU Screen es la respuesta que has estado buscando, pero se parece mucho a Vi. Has aprendido mucho sobre los comandos para configurar un entorno de pantalla exitoso. Aquí hay algunas cosas para comenzar. En primer lugar, querrá este .screenrc http://paste.ubuntu.com/473764/ guardarlo en el servidor remoto en la carpeta de inicio de sus usuarios. A continuación, instale la pantalla en la máquina remota ( sudo apt-get install screen) A continuación, querrá iniciarlo aquí. Aquí hay algunos comandos para "encender la pantalla":

screen- Esto es bastante simple. Comienza una nueva sesión de pantalla screen -ls: enumera todas las sesiones de pantalla activas. Sí, puede tener múltiples terminales dentro de múltiples pantallas. TAN DULCE.

Muestra

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> - Esto reanudará una sesión de pantalla separada, IE: screen -x 16467

Una vez que esté en una pantalla (y haya empleado mi .screenrcarchivo de muestra ) Verá lo siguiente en la parte inferior:

(LOAD) 0$* bash

Cuál es la carga de los servidores y una lista de todas las "pestañas de terminal" abiertas. Actualmente solo una ventana. Escribe algo en la prensa de entonces esta combinación de teclas: Ctrl + Ala liberación, a continuación, pulse c. Ctrl + Aes la secuencia de escape Todos los comandos se inician con esta combinación. ces crear una nueva pestaña. Notará que el pie de página tiene (LOAD) 0-$ bash 1$* bashque muestra que hay otra pestaña abierta y la pestaña activa es el número 1. Puede abrir un máximo de 60 pestañas por sesión de pantalla.

Si desea salir de la pantalla, sino que siga funcionando el uso Ctrl + Aentonces dque se separe de su sesión. Finalmente, puede cerrar las pestañas usando Ctrl + Aentonces, kque matará esa pestaña (si se bloquea), pero normalmente puede escribir exitcomo si estuviera en un terminal y cerrará esa pestaña.

Por último enumerar todas las ventanas abiertas se puede escribir Ctrl + Aa continuación ".

Hay una gran cantidad de opciones disponibles para la pantalla que debe verter sobre el archivo man para más Hay algunos inconvenientes. No puede usar su barra de desplazamiento en la pantalla, tiene que usar controles de búfer para retroceder, sin embargo, lo anterior es suficiente para comenzar a ver si esta es una opción viable. Una gran cosa sobre esto y algo que he tratado mucho como administrador del sistema: conectividad de red. ¡Si su red se cae, sus operaciones no se perderán! Dado que la pantalla se está ejecutando en el servidor. Simplemente necesita volver a iniciar sesión a través de SSH screen -lsy luego screen -xvolver a iniciar sesión.

Marco Ceppi
fuente
¡Parece que txwikinger me ganó con algunos enlaces útiles!
Marco Ceppi
Escriba Ctrl + Aluego ?para ir a la página de ayuda. Todos los comandos y accesos directos se enumeran allí. Escriba Ctrl + Aluego :para usar cualquiera de los comandos por nombre, si recuerda el nombre pero olvidó la tecla de acceso rápido.
Dan
1

Si está utilizando Ubuntu Server Edition byobues definitivamente su mejor opción. La Guía del servidor de Ubuntu tiene documentación útil .

En general, es más fácil de aprender y usar que, screeny se instala de forma predeterminada.

jbowtie
fuente
0

Uso Emacs, por lo que la configuración predeterminada de la pantalla me dificulta la vida.

$ cat /home/cjac/.screenrc 

escapar

¡Trata eso!

cjac
fuente