Solución: no se asignará el pseudo-terminal porque stdin no es un terminal

En la mayoría de los casos, recibirá un error confuso de “pseudo-terminal no se asignará porque stdin no es un terminal” solo cuando esté ejecutando algún tipo de comando SSH desde un script. Si está ejecutando el mismo comando desde la línea de comando, entonces podría funcionar perfectamente bien.

Antes de continuar, asegúrese de haber agregado su clave pública al agente SSH y luego intente usar ssh nuevamente. Es posible que te hayas perdido una llave. Por otro lado, si esto no funciona, deberá realizar una pequeña solución de problemas en su secuencia de comandos.

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

Hay un par de opciones de línea de comandos que pueden solucionar el problema rápidamente. Intente ssh -t -t -R seguido del resto de lo que estaba tratando de conectarse para forzar la asignación de pseudo-terminal. Por ejemplo, supongamos que iba a utilizar ssh -p 80 [email protected] para iniciar sesión en su cuenta en googlesyndication.com, que por supuesto es un dummy para documentación que no existe.

Intente ejecutar, por ejemplo, ssh -t -t -R -p 80 [email protected] y vea si esto soluciona el problema. Por supuesto, deberá reemplazar el nombre con su cuenta y nombre de host reales para iniciar sesión correctamente en el sistema. Esto fuerza la asignación de un terminal, por lo que no debería ver que el pseudo-terminal no se asignará porque stdin no es un error de terminal.

Por otro lado, es posible que termine con una cadena constante de mensajes de error. Algunos usuarios han comentado que esto podría considerarse divertido.

Sin duda, es frustrante, de todos modos, así que use Ctrl + C para finalizar el proceso.

Puede intentar usar solo un interruptor -t o aumentar el número. Si esto no funciona, reemplace cualquier modificador -t con un modificador -T en el comando, por ejemplo, ssh -T -R -p 80 [email protected] y ver si eso funciona.

Este método deshabilita todo el proceso de asignación de pseudo-terminal por completo, por lo que podría funcionar en los casos en que forzarlo no funciona. Por supuesto, nada de esto debería ser un problema desde la línea de comandos, pero asegúrese de tomar nota cuando encuentre qué opción funciona desde su secuencia de comandos para que pueda usarla en cualquier secuencia de comandos futura que deba ejecutar para acceder a dicho servidor.

Dado que el comando ssh le dio a estas dos opciones opuestas nombres similares, recuerde que -t fuerza la asignación de pseudoterminales mientras que -T la deshabilita. Estas opciones distinguen entre mayúsculas y minúsculas y, a menudo, son necesarias desde el interior de los scripts porque ssh necesita un terminal TTY tradicional para funcionar. Naturalmente, en su caso estaría utilizando 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 está incluido de forma predeterminada. Siempre puedes 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 está usando, entonces probablemente no lo necesite. Sin embargo, también puede usar las mismas técnicas para sorprender los mensajes de error relacionados con la asignación de pseudoterminales en este tipo de entorno.

Por ejemplo, utilice sshpass -p contraseña ssh -T [email protected] para obligar al sistema a trabajar desde el interior de su secuencia de comandos.

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

En ocasiones, es posible que reciba otro mensaje de error incluso después de arreglar todo esto. Si recibe una advertencia que dice que no hay acceso a tty y luego se le recuerda que no hay control de trabajo en su shell, debería poder trabajar con cierta normalidad.

Este error es causado por algo irregular en el servidor remoto relacionado con csh, tcsh o posiblemente incluso con Almquist u otro shell. Es posible que no lo hayas notado porque estabas recibiendo otros mensajes de error, pero siempre que no veas ningún otro sobre pseudoterminales, debería ser posible continuar relativamente como lo harías normalmente.

Sin embargo, es posible que no desee intentar usar Ctrl+Z en este caso para detener los procesos, ya que es posible que no haya forma de que se inicien de nuevo. Si recibe un mensaje de error que dice que hay trabajos detenidos cuando sale, entonces no podrá cerrar la sesión.

Usa los comandos ps y kill para close cualquier trabajo que no pueda cerrar, suponiendo que no le importe perder trabajo en el proceso. Podrás salir ahora.

Leer siguiente

  • Corrección: Teredo Tunneling Pseudo-Interface Error Code 10
  • Solución: no se recibió una interrupción de reloj en un procesador secundario dentro del…
  • Solución: se envió un saludo incorrecto 4.3.4 se excedieron los recursos asignados
  • Corrección: No se pudo cargar el medio, ya sea porque el servidor o la red fallaron…

Related Posts