No puedo escribir más en Git bash después de regresar de ssh -tt

No puedo escribir más en Git bash después de regresar de ssh -tt

Quería ejecutar un comando en un shell remoto en su entorno interactivo, para que cargara mi control remoto .bash_profileallí primero antes de ejecutar el comando.

Esto funciona muy bien:

  • echo "command" | ssh user@remote_host [1]

Pero da error

El pseudoterminal no se asignará porque la entrada estándar no es un terminal.

No sé si esto es un problema porque el comando anterior funciona muy bien para mi propósito, pero aun así busqué una solución para que desapareciera y encontré

  • ssh -t -t [2]

Combinándolos obtienes echo "command" | ssh -tt user@remote_hostlo que funciona muy bien.

Pero por alguna extraña razón en Git bash, después de regresar de ejecutar el comando, no puedo escribir más. Lo probé en Cygwin, donde funciona muy bien, por lo que solo Git bash tiene este problema.

Intenté escribir exiten caso de que todavía estuviera atrapado de manera invisible en ese shell remoto, pero nada funciona.

¿Alguna idea de cuál podría ser el problema al hacer ssh -tten Git bash?

Respuesta1

El mensaje "No se asignará el pseudoterminal" es solo informativo. Si el comando que está ejecutando no necesita una terminal, sería mejor que ejecute ssh con la -Topción de deshabilitar la asignación de PTY y cerrar el mensaje.

Parece que su TTY local se está quedando en un estado extraño por alguna razón. La ejecución stty sanedebería restablecer el terminal a un estado utilizable. Sé que dijiste que no puedes escribir, pero puedes intentar hacer esto:

  1. Escriba Control-Q (es decir, mantenga presionada la tecla "Control" y presione "Q") para cancelar cualquier suspensión Ctrl-S/Ctrl-Q que pueda estar vigente.
  2. Escriba Control-J. Este es un carácter de nueva línea literal para garantizar que el shell esté listo para leer una nueva línea de comando.
  3. escribe "stty cuerdo" y luego Control-J nuevamente. Pruébalo incluso si lo que escribes no aparece en la pantalla.

Si eso no funciona, la opción nuclear sería ejecutar "muy cuerdo" en el TTY atascado desde otra terminal.

  1. Abra otra ventana de terminal.
  2. Utilice "ps" para averiguar en qué PTY se encuentra la sesión bloqueada.
  3. Ejecutar stty sanecon entrada redirigida desde el PTY.

Por ejemplo, en Linux:

$ ps -fu jdoe
...
jdoe   2083  2080  0 22:17 pts/0    00:00:00 /bin/bash  <-- TTY is "/dev/pts/0"
$ stty sane < /dev/pts/0

información relacionada