Przekierowanie portów (tunelowanie), to sposób do przekazania w inny sposób niebezpieczny ruch TCP przez SSH Secure Shell. Daje ono możliwość zabezpieczenia np takich usług jak POP3, SMTP i HTTP, które normalnie byłyby niezabezpieczone.

Istnieją dwa rodzaje przekierowania portów: lokalne i zdalne. Są one również nazywane odpowiednie tunelowaniem wychodzących i przychodzącym.
Przekierowanie portów lokalnych, kieruje ruch przychodzący na lokalny port do określonego portu zdalnego. Na przykład, ruch przychodzący na port 1234 klienta może zostać przekazany port 23 na zdalnym serwerze.
Natomiast przekierowanie portu zdalnego to przekazanie ruch przychodzącego do portu na zdalnym serwerze do określonego portu klienta. Na przykład, ruch przychodzący do portu 1234 na serwerze może zostać przekazany do portu 23 u klienta.
Przykład - tunelowanie wychodzące:
Przekierowanie na port 3306 (standardowy port dla MySql) na komputerze w pracy (host example.work.com) z portu 5555 komputera w domu:
ssh-L 5555:example.work.com:3306 user@wexample.work.com
od tego momentu możemy połączyć się z bazą danych w bezpiecznym połączeniu używając jako hosta lokalnej maszyny: 127.0.0.1:5555
Przykład - tunelowanie przychodzące:
Umożliwia dostęp do usługi (port 80 HTTP) na komputerze domowym dla ludzi w pracy na porcie 5555
ssh-R 5555:example.work.com:80 user@wexample.work.com
Od tego momentu osoba pracująca na maszynie example.work.com będzie miała dostępną usługę HTTP z naszego komputera na porcie 5555 za pośrednictwem bezpiecznego połączenia.
