Celil Uyanikoglu

Linux SSH Tünel ve Port Yönlendirme Rehberi

Celil Uyanikoglu Celil Uyanikoglu · 29 Nis 2026 · 5 dk okuma

SSH sadece uzak sunuculara bağlanmak için değil, güvenli tüneller oluşturmak için de kullanılır. Port yönlendirme ile trafiği şifreli SSH bağlantısı üzerinden aktarabilir, güvenlik duvarlarını aşabilir ve yerel servisleri dışarıya açabilirsiniz.

SSH Tünel Nedir?

SSH tüneli, ağ trafiğini şifreli SSH bağlantısı üzerinden yönlendiren bir tekniktir. İki bilgisayar arasında güvenli bir kanal oluşturur. Halka açık Wi-Fi gibi güvensiz ağlarda bile verileriniz korunur.

Üç tür port yönlendirme vardır:

  • Local (Yerel): Yerel porttan uzak servise
  • Remote (Uzak): Uzak porttan yerel servise
  • Dynamic (Dinamik): SOCKS proxy olarak çalışır

Local Port Forwarding (-L)

Yerel port yönlendirme, yerel makinenizden uzak sunucuya tünel oluşturur. Uzak servislere sanki yerel çalışıyormuş gibi erişirsiniz.

Temel Sözdizimi

ssh -L yerel_port:hedef_host:hedef_port kullanici@ssh_sunucu

Veritabanı Erişimi Örneği

Senaryo: Uzak sunucuda çalışan MySQL veritabanına erişmek istiyorsunuz. MySQL portu (3306) dışarıya kapalı, sadece sunucu içinden erişilebilir.

ssh -L 3306:localhost:3306 kullanici@sunucu

Artık yerel makinede localhost:3306'ya bağlanarak uzak MySQL'e erişebilirsiniz.

mysql -h 127.0.0.1 -P 3306 -u dbuser -p

Web Uygulaması Erişimi

Uzak sunucuda sadece localhost'ta çalışan web uygulaması (8080 portu):

ssh -L 8080:localhost:8080 kullanici@sunucu

Tarayıcıda http://localhost:8080 açarak uzak uygulamaya erişin.

Farklı Host'a Yönlendirme

SSH sunucusu üzerinden ağdaki başka bir makineye erişim:

ssh -L 5432:veritabani-sunucu:5432 kullanici@ssh-sunucu

SSH sunucusu aracılığıyla veritabani-sunucu:5432'ye bağlanırsınız.

Birden Fazla Port

Tek komutla birden fazla port yönlendirme:

ssh -L 3306:localhost:3306 -L 6379:localhost:6379 -L 9200:localhost:9200 kullanici@sunucu

Arka Planda Çalıştırma

Tüneli arka planda başlatma:

ssh -fNL 3306:localhost:3306 kullanici@sunucu

-f: Arka plana at -N: Komut çalıştırma (sadece tünel)

Remote Port Forwarding (-R)

Uzak port yönlendirme, uzak sunucudan yerel makinenize tünel oluşturur. Yerel servisleri dışarıya açmak için kullanılır.

Temel Sözdizimi

ssh -R uzak_port:hedef_host:hedef_port kullanici@ssh_sunucu

Yerel Web Sunucusu Paylaşımı

Senaryo: Yerel makinenizde geliştirdiğiniz web uygulamasını müşteriye göstermek istiyorsunuz.

ssh -R 8080:localhost:3000 kullanici@sunucu

Artık sunucu:8080 adresinden yerel 3000 portuna erişilebilir.

NAT Arkasından Erişim

Ev bilgisayarınız NAT arkasında, dışarıdan erişilemiyor. Uzak sunucu üzerinden erişim sağlayın:

ssh -R 2222:localhost:22 kullanici@sunucu

Sunucuda localhost:2222'ye SSH yaparak ev bilgisayarınıza bağlanabilirsiniz.

GatewayPorts Ayarı

Varsayılan olarak uzak port sadece localhost'tan erişilebilir. Tüm arayüzlerden erişim için sunucuda /etc/ssh/sshd_config dosyasına ekleyin:

GatewayPorts yes

SSH servisini yeniden başlatın:

sudo systemctl restart sshd

Dynamic Port Forwarding (-D)

Dinamik port yönlendirme, SOCKS proxy oluşturur. Tüm trafiği SSH üzerinden yönlendirebilirsiniz.

Temel Sözdizimi

ssh -D yerel_port kullanici@sunucu

SOCKS Proxy Oluşturma

ssh -D 1080 kullanici@sunucu

Artık localhost:1080 üzerinde SOCKS5 proxy çalışıyor.

Tarayıcı Yapılandırması

Firefox'ta:

  1. Ayarlar > Ağ Ayarları
  2. Manuel proxy yapılandırması
  3. SOCKS Host: 127.0.0.1, Port: 1080
  4. SOCKS v5 seçin

Chrome'da:

google-chrome --proxy-server="socks5://127.0.0.1:1080"

Kullanım Senaryoları

Halka açık Wi-Fi'de güvenli gezinme: Tüm trafiğiniz şifrelenir.

Coğrafi kısıtlamaları aşma: Farklı ülkedeki sunucu üzerinden erişim.

İçerik filtrelemeyi geçme: Kurumsal ağlarda engellenen sitelere erişim.

SSH Config ile Tünel

Her seferinde uzun komut yazmak yerine ~/.ssh/config dosyasında tanımlayın:

Host tunel-db HostName sunucu.example.com User kullanici LocalForward 3306 localhost:3306 LocalForward 6379 localhost:6379

Host tunel-proxy HostName sunucu.example.com User kullanici DynamicForward 1080

Kullanım:

ssh tunel-db ssh tunel-proxy

Kalıcı Tüneller

SSH tünelleri bağlantı koptuğunda kapanır. Kalıcı tünel için autossh kullanın.

Kurulum

sudo apt install autossh

Kullanım

autossh -M 0 -fNL 3306:localhost:3306 kullanici@sunucu
-M 0: Monitoring port devre dışı (ServerAliveInterval kullanılır)

Systemd Servisi

Kalıcı tünel için systemd servisi oluşturun:

/etc/systemd/system/ssh-tunnel.service:

[Unit] Description=SSH Tunnel After=network.target

[Service] User=kullanici ExecStart=/usr/bin/ssh -NL 3306:localhost:3306 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes sunucu Restart=always RestartSec=10

[Install] WantedBy=multi-user.target

Etkinleştirme:

sudo systemctl enable ssh-tunnel sudo systemctl start ssh-tunnel

SSH Jump Host

Ara sunucu üzerinden hedefe bağlanma:

ssh -J atlama@jump-sunucu kullanici@hedef-sunucu

Port yönlendirme ile:

ssh -J atlama@jump-sunucu -L 3306:localhost:3306 kullanici@hedef-sunucu

Config dosyasında:

Host hedef HostName hedef-sunucu User kullanici ProxyJump atlama@jump-sunucu

Güvenlik Notları

Tünel içi şifreli: SSH bağlantısındaki tüm trafik şifrelenir.

Uç noktalar şifresiz olabilir: SSH sunucusu ile hedef arasındaki trafik şifrelenmeyebilir. Örneğin, SSH sunucusundan HTTP sunucusuna giden trafik düz metin.

Erişim kontrolü: Port yönlendirme ile normalde erişemeyeceğiniz servislere erişirsiniz. Güvenlik politikalarına dikkat edin.

AllowTcpForwarding: Sunucuda port yönlendirmeyi devre dışı bırakmak için /etc/ssh/sshd_config:

AllowTcpForwarding no

Pratik Senaryolar

Uzak Veritabanı Geliştirme

Yerel IDE'den uzak veritabanına güvenli erişim:

ssh -L 5432:localhost:5432 dev@gelistirme-sunucu

IDE bağlantı ayarlarında localhost:5432 kullanın.

Web Geliştirme Paylaşımı

Yerel geliştirme sunucusunu ekip arkadaşına gösterme:

ssh -R 3000:localhost:3000 kullanici@ortak-sunucu

Ekip arkadaşı ortak-sunucu:3000 adresinden görüntüler.

Güvenli E-posta Erişimi

Güvensiz ağda e-posta sunucusuna erişim:

ssh -L 993:mail.example.com:993 -L 587:mail.example.com:587 kullanici@sunucu

E-posta istemcisinde sunucu olarak localhost kullanın.

Sorun Giderme

Bağlantı reddediliyor:

  • Hedef port açık mı kontrol edin
  • Güvenlik duvarı kurallarını kontrol edin
  • SSH sunucusunda AllowTcpForwarding etkin mi

Port zaten kullanımda:

  • Farklı yerel port seçin
  • Mevcut bağlantıyı sonlandırın: lsof -i :3306

Tünel çalışıyor ama bağlanamıyorum:

  • Hedef servis çalışıyor mu kontrol edin
  • localhost yerine 127.0.0.1 deneyin

0 Yorum

Yorum Yaz