La forma normal de conectarse a un servidor SSH es ssh username@ip_address
. Pero un usuario solo puede querer ejecutar un programa en la máquina remota. Entonces el nombre del programa sigue después del argumento normal que es ssh username@ip_address <program_name>
. Por ejemplo, ssh username@ip_address ls
. Ese argumento está bien, excepto para los programas interactivos (que también aceptan la entrada del usuario y proporcionan salida), por ejemplo top
. La salida es
Término variable de entorno no establecida.
lo que significa que no hay un terminal (pseudo) conectado entre los programas sshd y top. La solución es agregar un argumento -t
donde ahora se convierte todo el comando ssh -t username@ip_address top
.
Mi pregunta es ¿por qué sshd por defecto no puede usar un pseudo-terminal para comunicarse con programas no interactivos, por lo que no es necesario agregar el -t
argumento para programas interactivos?
RequestTTY yes
(o force
) en su configuración.
top
puede ejecutarse en modo por lotes.