Как сказано в названии, я не очень понимаю разницу между ними. Например, если я подключаюсь к определенному серверу через SSH без туннелирования, я получаю ту же оболочку, что и при туннелировании.
Если вы добавляете туннелирование к сеансу SSH, создается дополнительный поток данных для туннеля через то же зашифрованное соединение. Вы также можете создать более одного туннеля или не начинать интерактивный сеанс (с -N
параметр). Так что, по сути, реальной разницы нет, просто разные методы использования зашифрованного соединения.
SSH - это действительно общий механизм защищенной связи, который может передавать произвольные данные по незащищенному базовому каналу. По умолчанию эти данные представляют собой сеанс оболочки (т.е. ваш локальный терминал подключен к оболочке, запущенной в удаленной системе), но существуют разные типы данных, которые можно транспортировать.
Одним из таких типов является соединение с потоковым сокетом (например, TCP-соединение), которое называется туннелированием. Клиент SSH прослушивает порт TCP и передает любые соединения, сделанные с этим портом, по защищенному каналу и завершает соединение из удаленной системы.
По умолчанию, когда вы настраиваете туннель, вы все равно получаете оболочку, то есть клиент SSH передает два типа данных по одному и тому же соединению (туннель и оболочка). Вы можете отключить оболочку с помощью -N
параметр.