Sim, às vezes você deseja fazer uma conexão silenciosa e em segundo plano, por exemplo, ao configurar um túnel (por exemplo, proxy SOCKS). Nesses exemplos, você deseja que o processo NÃO tenha um tty.
Aqui está um exemplo de configuração do encaminhamento de porta do host local para algum host remoto ...
ssh -l username -fNTL 8073:server:873
Depois que isso for configurado, você poderá rsync no localhost, em vez de no host remoto, portanto, efetivamente, tunelando seu rsync via ssh
...
rsync --port=8073 -a me@localhost::myStuff /tmp/myStuff/
Você faria isso dizendo se o rsync saindo server
estava bloqueado, mas ssh
não estava.
Além do exposto acima ...
(1) Manuseio de escape tilda diferente:
O "~". O escape desconectará você se você tiver um pty (-t). Para um comando de longa execução, você pode impedir que alguém interrompa acidentalmente o processo se digitar ~.
$ ssh hostname.tomontime.com -t sleep 60
[tipo ~. e desconecta] A
conexão com hostname.tomontime.com foi encerrada.
$ ssh hostname -T sleep 60
[digito ~. e trata-o como pressionamentos de tecla normais, que o comando sleep ignora.]
~.
~.
Tente a mesma coisa com CTRL-C. Você verá que, com -t, você está enviando o CTRL-C para o "suspensão". Com -T, você está enviando o CTRL-C para o programa ssh em execução na sua máquina. Pode haver momentos em que isso faz diferença (ou seja, o programa lida com INT de maneira diferente do HUP)
(2) Você apenas deseja minimizar a atividade de conexão de rede ou pty.
Ao tentar reiniciar uma máquina sem ptys, você não deseja incentivar o sistema a alocar um ptys! Isso também minimiza as conexões de rede que precisarão ser fechadas (atrasando a reinicialização).
Isso funcionará de maneira mais rápida e confiável:
ssh -T hostname reboot
Isso pode ter problemas:
ssh -t hostname reboot
fonte
O ssh -t cria um pseudo terminal na máquina remota. Isso é útil se você estiver encadeando comandos ssh através de vários servidores e quiser um terminal real do outro lado (para que você possa usar o 'vi', por exemplo).
Você NÃO pode querer '-t' quando os scripts de login se comportarem de maneira diferente se houver um terminal. Esta é uma prática recomendada IMHO, mas já vi casos em que um script de logon verifica o TTY antes de 1) definir o prompt e 2) expandir o caminho para muitos aplicativos interativos.
Em outra instância (mencionada por TomOnTime acima), na verdade, já encontrei casos em que todos os TTY (ptys) são usados. Obviamente, é uma configuração incorreta, mas não é necessário procurar um recurso para vários túneis e rsyncs.
fonte