Basicamente, quando você executa um programa interativo no servidor, é necessário usar ssh -t
em vez de ssh
. Por exemplo:
Isso funciona: ssh -t user@server top
.
Isso não funciona: ssh user@server top
.
A pergunta é: Por que o ssh precisa de um tty do lado do servidor para tais programas? É possível canalizar diretamente fluxos de dados entre o programa do servidor e o lado do cliente tty?
Para adicionar alguns detalhes, sabemos que o tty pode multiplexar stdout e stderr em um único fluxo. Isso significa que, se você executar ssh -t
, no lado do cliente, não será possível diferenciar stdout e stderr e canalizá-los separadamente. Portanto, eu acho que um lado do servidor tty entre quebra algum tipo de transparência. Seria bom se o ssh tornasse os programas do lado do servidor exatamente a mesma experiência como se esses programas fossem locais.