Туннель SSH обеспечивает зашифрованный канал на основе протокола SSH.
Туннель SSH является формой протокола туннелирования, в котором возникновение трафика TCP и предназначенный для определенных портов TCP передается в пакетах, маркированных совершенно другими номерами портов. Фактический источник и целевые порты передаются в полезной нагрузке пакетов.
Например, туннель между портом TCP 1234 на host
машина и 4321 на destination
машина может быть достигнута с:
[me@host]$ ssh -L 1234:localhost:4321 me@destination
Где localhost
параметр определяет адрес, к которому порт будет привязан host
машина. Другими словами, трафик, предназначенный к localhost:1234
будет передан по ssh
соединение и данный destination
машина, как будто это прибыло в порт 4321 на destination
машина.
Туннель SSH допускает передачу незашифрованного трафика по безопасному (зашифрованный канал). Весь трафик проходит через единственное соединение TCP между эфемерным портом на хост-машине и портом 22
(или другой порт, если ssh
работает на нестандартном порте). И это рассматривают как любой другой трафик SSH и шифруют с SSL/TLS соответственно.
Туннелирование SSH часто используется для обхода ограничений с NATs и брандмауэрами, которые могут ограничить доступ к определенным портам на целевой машине.
Обратный туннель SSH может быть достигнут с -R
, например:
[me@host]$ ssh -R 1234:localhost:4321 me@destination
Будет иметь эффект тот трафик, направленный к localhost:1234
на destination
машина будет передана host
машина, как будто это прибыло в порт 4321 на host
машина.