ssh user@host "ls --color=auto"
ls
somente exibe cores quando está gravando em um terminal. Quando você especifica um comando para que ssh
seja executado no host remoto, o ssh não aloca um TTY (interface de terminal) por padrão. Então, quando você executa o comando acima, o ssh não aloca um terminal no sistema remoto, ele vê que ele não está gravando em um terminal e não produz cores.
Você pode executar ssh com a opção -t
para alocar um terminal. O seguinte deve imprimir cores:
ssh -t user@host "ls --color=auto"
Se ssh
estiver sendo executado de forma não interativa e sua própria saída local não estiver indo para um terminal, ela ignorará um único -t
sinalizador. Nesse caso, você pode especificar -t
mais de uma vez para forçar o ssh a alocar um TTY no sistema remoto:
ssh -tt user@host "ls --color=auto"