Auto inicio la pantalla gnu cuando ssh en uno de mis propios servidores. Cuando termine, tengo que separarme. Luego salga para salir de ssh. Esto significa que cuando vuelva a ingresar al servidor en algún momento, puedo continuar donde lo dejé.

¿Puedo crear un alias (por ejemplo) que (desde la pantalla) separe y suelte ssh?

Comentarios

  • ¿Cómo se inicia automáticamente screen

Responder

Iniciando screen al iniciar sesión en el host remoto (ejecutado en su máquina local):

ssh -t user@host screen 

En la pantalla sesión, en el host remoto, para desconectar y cerrar la sesión (lo que finalizaría la sesión SSH a menos que esté usando una conexión persistente usando un socket de control (es decir, usando la configuración ControlMaster con ControlPersist en ~/.ssh/config)):

screen -d 

Más tarde, para iniciar sesión y vuelva a adjuntar:

ssh -t user@host screen -r 

Tenga en cuenta que debe usar -t con ssh, forzando la asignación de pseudo-terminal, para iniciar screen de esta manera.

El alias en el host remoto sería f o screen -d, tal vez detach="screen -d" o algo similar.

En el host local, podría tener una sección en su ~/.ssh/config archivo que dice

Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname 

Luego, siempre que utilice

ssh myhost-screen 

una screen se crearía (o volvería a adjuntar) una sesión en el host especificado, mientras

ssh myhost 

no usaría screen.

Nota: RemoteCommand se agregó en OpenSSH 7.6 (2017 -10-03).


Para tmux:

  • Use tmux new-session -A -s "%n" en ~/.ssh/config en lugar de screen -d -R.
  • Use prefix d o tmux detach-client o tmux detach para separar.

Comentarios

  • Bien, gracias. En casa, esto funcionará muy bien. No sabía sobre ' Forzar asignación de pseudo-tty '. Probé esto y funciona.

Responder

Cuando ejecuta su comando de pantalla para recuperar o crear su pantalla , Después de agregas un kill de tu shell padre, por lo que eliminarás tu conexión ssh.

un ejemplo para matar mi proceso padre si el padre es bash

kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " ) 

Comentarios

  • Thx. Si ingreso desde algún lugar donde no puedo especificar una aplicación para ejecutar (como en línea ssh app.shellngn.com ), y modifico su línea de código para busque sesiones ssh, esto funcionará.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *