Solución: no se asignará una terminal falsa porque stdin no es una terminal

En la mayoría de los casos, se confundirá «stdin no se asignará porque stdin no es un error de terminal» sólo cuando ejecute algún tipo de comando SSH desde un script. Si está ejecutando el mismo comando desde la línea de comandos, podría funcionar perfectamente.

Antes de continuar, asegúrese de haber agregado su clave pública al agente SSH y luego intente usar ssh nuevamente. Es posible que le haya faltado una llave. Por otro lado, si esto no funciona, tendrá que solucionar un poco los problemas en su script.

Método 1: aplicar y deshabilitar la asignación de pseudo-tty

Hay un par de opciones de línea de comandos que pueden resolver rápidamente el problema. Pruebe ssh -t -t -R y luego el resto de lo que deseaba conectarse para implementar la asignación de pseudo-terminal. Por ejemplo, digamos que iba a usar ssh -p 80 appuals@ssh.example.com para iniciar sesión en su cuenta en example.com, por supuesto, su documentación inexistente es un bloqueo.

Intente ejecutar, por ejemplo, ssh -t -t -R -p 80 appuals@ssh.example.com y vea si esto soluciona el problema. Por supuesto, deberá reemplazar su cuenta y el nombre de host real para poder iniciar sesión correctamente en el sistema. Esto se aplica a la asignación de terminales, por lo que no debería ver que el terminal falso no se asignará porque stdin no es un error de terminal.

Por otro lado, puede terminar con una serie continua de mensajes de error. Algunos usuarios comentaron que esto podría considerarse divertido.

Sin embargo, es ciertamente frustrante, así que use Ctrl + C para finalizar el proceso.

simulacro de terminal

Puede probar con un único interruptor -t o aumentar el número. Si esto no funciona, reemplace los interruptores -t con un interruptor -T en el comando, p. Ej. ssh -T -R -p 80 appuals@ssh.example.com y vea si funciona.

Este método desactiva todo el proceso de asignación de pseudo-terminal, por lo que puede funcionar en situaciones en las que no está obligado. Por supuesto, esto no debería ser un problema desde la línea de comandos, pero asegúrese de tomar nota cuando descubra qué opción funciona desde su secuencia de comandos para que pueda usarla en cualquier secuencia de comandos futura que necesite ejecutar para acceder a ese servidor.

Dado que el comando ssh dio nombres similares a estas dos opciones opuestas, recuerde que -t fuerza una asignación de pseudo-terminal y -T la deshabilita. Estas opciones distinguen entre mayúsculas y minúsculas y, a menudo, se necesitan desde los scripts porque se requiere una terminal TTY tradicional para que ssh funcione. Por supuesto, en su caso, estaría usando su emulador de terminal para este propósito.

Método 2: usar sshpass

Algunas personas pueden encontrar que sus scripts funcionan mejor con el comando sshpass, que no se incluye de forma predeterminada. Siempre puede instalarlo con sudo apt-get install sshpass o sudo yum install sshpass si prefiere probarlo o porque lo necesita para su caso de uso específico.

Si aún no lo ha usado, probablemente no lo necesite. Sin embargo, también puede utilizar las mismas técnicas para sorprender los mensajes de error asociados con la asignación de pseudo-terminal en dicho entorno.

Por ejemplo, use la contraseña sshpass -p ssh -T appuals@ssh.example.com para forzar al sistema a operar desde su script.

Método 3: corregir errores de gestión de trabajos

A veces, es posible que reciba un mensaje de error más incluso después de haber solucionado todo esto. Si se le advierte que no tiene acceso a lecturas tty y luego se le recuerda que no hay control de trabajo en su shell, debería poder trabajar normalmente.

Este error se produce porque hay algo irregular en el servidor remoto relacionado con csh, tcsh o incluso con Almquist u otro shell. Es posible que no lo hayas notado porque recibiste otros mensajes de error, pero siempre que no veas más sobre terminales falsos, deberías poder proceder de manera razonablemente similar a como lo harías normalmente.

Sin embargo, es posible que no desee probar Ctrl + Z en este caso para detener los procesos, ya que es posible que no haya forma de configurarlos nuevamente. Si está leyendo un mensaje de error que dice que los trabajos se han detenido cuando salga, no podrá cerrar la sesión.

detener publicación

Use los comandos ps y kill para cerrar cualquier trabajo que no pueda cerrar, asumiendo que no le importa perder trabajo en el proceso. Ahora podrás irte.

Deja un comentario