Відповіді:
Так, іноді потрібно встановити безшумне фонове з'єднання, наприклад, під час налаштування тунелю (наприклад, проксі-сервер SOCKS). У таких прикладах ви хочете, щоб процес НЕ мав Tty.
Ось приклад налаштування переадресації портів з localhost на якийсь віддалений хост ...
ssh -l username -fNTL 8073:server:873
Після цього буде налаштовано rsync на localhost, а не на віддалений хост, отже, ефективно, тунелюючи вашу rsync за допомогою ssh
...
rsync --port=8073 -a me@localhost::myStuff /tmp/myStuff/
Ви б це сказали, якщо rsync, який виходив, server
був заблокований, але ssh
ні.
Крім перерахованого вище ...
(1) Різні керовані втечі:
Значення "~". escape відключить вас, якщо у вас є pty (-t). Для давно запущеної команди, можливо, ви захочете не допустити, щоб хтось випадково зупинив процес, якщо він вводить ~.
$ ssh hostname.tomontime.com - не спить 60
[тип ~. і він відключається]
Підключення до hostname.tomontime.com закрите.
$ ssh ім'я хоста -спання 60
[я набираю ~. і це трактує це як звичайні натискання клавіш, які команда сну ігнорує.]
~.
~.
Спробуйте те ж саме з CTRL-C. Ви побачите, що за допомогою -t ви надсилаєте CTRL-C в режим "сну". З допомогою -T ви надсилаєте CTRL-C програмі ssh, що працює на вашій машині. Можуть бути випадки, коли це має значення (тобто програма обробляє INT інакше, ніж HUP)
(2) Ви просто хочете звести до мінімуму активності або кількість підключень до мережі.
Під час спроби перезавантажити машину, яка не має ptys, ви не хочете заохочувати систему намагатися виділити pty! Це також мінімізує мережеві з'єднання, які доведеться закрити (затримка перезавантаження).
Це буде працювати швидше та надійніше:
перезавантажити ssh -T ім'я хоста
У цьому можуть виникнути проблеми:
перезавантажити ssh -t ім'я хоста
ssh -t створює псевдотермінал на віддаленій машині. Це корисно, якщо ви прив'язуєте команди ssh через декілька серверів і хочете справжній термінал на далекій стороні (щоб ви могли використовувати, наприклад, "vi").
Ви можете НЕ хотіти "-t", коли сценарії входу ведуть себе по-різному, якщо є термінал. Це погана практика IMHO, але я бачив випадки, коли скрипт входу перевіряє TTY до 1) встановлення підказки та 2) розширення шляху до багатьох інтерактивних додатків.
В іншому випадку (згаданий TomOnTime вище) я фактично натрапив на випадки, коли всі TTY (ptys) використовуються. Очевидно неправильна конфігурація, але не потрібно жувати ресурс для кучки тунелів та rsyncs.