Sí, a veces desea hacer una conexión silenciosa y en segundo plano, por ejemplo, al configurar un túnel (por ejemplo, proxy SOCKS). En tales ejemplos, desea que el proceso NO tenga un tty.
Aquí hay un ejemplo de cómo configurar el reenvío de puertos desde localhost a algún host remoto ...
ssh -l username -fNTL 8073:server:873
Después de que esto se haya configurado, puede rsync a localhost, en lugar de al host remoto, por lo tanto, de manera efectiva, tunelizando su rsync a través de ssh
...
rsync --port=8073 -a me@localhost::myStuff /tmp/myStuff/
Haría esto si la salida de rsync server
estuviera bloqueada, pero ssh
no lo estaba.
Además de lo anterior ...
(1) Diferente manejo de escape tilda:
El "~". escape te desconectará si tienes una pty (-t). Para un comando de larga ejecución, es posible que desee evitar que alguien detenga accidentalmente el proceso si escribe ~.
$ ssh hostname.tomontime.com -t sleep 60
[type ~. y se desconecta] Se ha
cerrado la conexión a hostname.tomontime.com.
$ ssh hostname -T sleep 60
[Escribo ~. y lo trata como pulsaciones de teclas normales, que el comando de suspensión ignora.]
~.
~.
Pruebe lo mismo con CTRL-C. Verá que con -t está enviando el CTRL-C a la "suspensión". Con -T está enviando el CTRL-C al programa ssh que se ejecuta en su máquina. Puede haber ocasiones en que esto haga la diferencia (es decir, el programa maneja INT de manera diferente que HUP)
(2) Solo desea minimizar la actividad de conexión de red o pty.
¡Al intentar reiniciar una máquina que no tiene ptys, no desea alentar al sistema a que intente asignar una pty! Esto también minimiza las conexiones de red que deberán cerrarse (retrasando el reinicio).
Esto funcionará de manera más rápida y confiable:
ssh -T hostname reiniciar
Esto puede tener problemas:
ssh -t hostname reiniciar
fuente
ssh -t crea un pseudo terminal en la máquina remota. Esto es útil si está encadenando comandos ssh a través de múltiples servidores y desea un terminal real en el otro lado (por lo que podría usar 'vi' por ejemplo).
Es posible que NO desee '-t' cuando los scripts de inicio de sesión se comportan de manera diferente si hay un terminal. Esta es una mala práctica en mi humilde opinión, pero he visto casos en los que un script de inicio de sesión busca TTY antes de 1) configurar el indicador y 2) expandir la ruta a muchas aplicaciones interactivas.
En otro caso (mencionado anteriormente por TomOnTime), en realidad me he encontrado con casos en los que todos los TTY (ptys) están agotados. Obviamente, una configuración incorrecta, pero no es necesario masticar un recurso para un montón de túneles y rsyncs.
fuente