Pseudo-terminal will not be allocated because stdin is not a terminal

Este error se nos puede presentar cuando tratamos de ejecutar comandos ssh de forma desatendida, por ejemplo en scripts, crontab o a través de nohup/segundo plano.

En mi caso efectivamente era por ejecutar un tunel SSH con nohup y en background. Al intentar ejecutarlo recibía el siguiente error:

Pseudo-terminal will not be allocated because stdin is not a terminal.

La solución es sencilla, tenemos que indicar al comando SSH que lo queremos ejecutar sin tty, para ello le pasamos los parámetros «-t -t»:

$ ssh -t -t foo@bar -L 123:bar:124