web-development-kb-es.site

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

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.

21
JPrescottSanders

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

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

byob 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 algunos capturas de pantalla de byobu.

24
txwikinger

Pantalla GN 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á esto .screenrchttp://paste.ubuntu.com/473764/ guárdelo en el servidor remoto en la carpeta de inicio de su usuario. A continuación, instale la pantalla en la máquina remota (Sudo apt-get install screen) A continuación, querrá activarlo aquí, hay algunos comandos para "activar la pantalla":

screen - Esto es bastante simple. Comienza una nueva sesión de pantalla screen -ls - Lista todas las sesiones de pantalla activas. Sí, puede tener múltiples terminales dentro de múltiples pantallas. SO 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 muestra .screenrc archivo) 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. Escriba algo y luego presione esta combinación de teclas: Ctrl + A suelte, luego presione c. Ctrl + A es la secuencia de escape. Todos los comandos se inician con esta combinación. c es crear una nueva pestaña. Notará que el pie de página tiene (LOAD) 0-$ bash 1$* bash que 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 pero mantenerla en funcionamiento, use Ctrl + A y luego d que separará su sesión. Finalmente, puede cerrar las pestañas usando Ctrl + A luego k que matará esa pestaña (si se bloquea) pero normalmente puede escribir exit como si estuviera en una terminal y lo hará cierra esa pestaña.

Por último, para enumerar todas las ventanas abiertas, puede escribir Ctrl + A y luego ".

Hay una gran cantidad de opciones disponibles para la pantalla que debe verter sobre el archivo man para obtener más información. 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 y luego screen -ls y screen -x nuevamente en su sesión.

5
Marco Ceppi

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

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

1
jbowtie

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

$ cat /home/cjac/.screenrc 

escapar

¡Trata eso!

0
cjac