
SSH Tünelleri İçin Pratik Rehber: Yerel ve Uzak Port Yönlendirme
iximiuz Labs'ten pratik bir SSH tüneli rehberi: yerel port yönlendirme (-L) bastion arkasındaki servislere nasıl ulaşır, -R yerel bir servisi nasıl dışarı açar ve -D SSH istemcisini nasıl SOCKS proxy'ye çevirir.
SSH, kaybolmaya niyeti olmayan eski bir teknoloji ve tünelleri hâlâ tek komutla, daha yeni araçların zor yetiştiği işleri yapıyor: genel bir bastion üzerinden iç VPC servisine ulaşmak, uzaktaki bir geliştirme sanal makinesinin localhost portunu tarayıcıda açmak ya da yerel bir sunucuyu dış dünyaya açmak. Ivan Velichko'nun iximiuz Labs'teki pratik rehberi yerel, uzak ve dinamik port yönlendirmeyi anlatıyor; laboratuvarlar dört sunucu ve üç ağdan oluşan bir ortamda çalışıyor.
Yerel port yönlendirme
-L bayrağı yönlendirmeyi istemci tarafında başlatır: SSH istemcisi yerel bir portu dinler ve oraya gelen trafik, bağlandığınız makineden erişilebilen remote_addr:remote_port adresine iletilir. Sözdizimi ssh -L [local_addr:]local_port:remote_addr:remote_port [user@]sshd_addr, ve ssh -f -N -L oturumu arka planda çalıştırır. İlk laboratuvarda uzak sunucunun 127.0.0.1:80 adresine bağlı web sunucusuna ağdan erişilemiyor; ssh -f -N -L 8080:localhost:80 203.0.113.30 komutundan sonra aynı sayfa yerel 8080 portunda yanıt veriyor.
Komut, SSH sunucusu dışında bir makineye de yönlendirme yapabilir. ssh -L 8081:172.16.0.40:80 203.0.113.30 komutunda bastion bağlantıyı kabul eder ve özel VPC sunucusuna ikinci sıçramayı bizim adımıza açar. Yalnızca loopback'e bağlı portlar ek bir numara gerektirir; çünkü yönlendirmeyi bastion çözer ve hedefin 127.0.0.1 adresini göremez. -J bayrağı bastion üzerinden atlar ve oturumu hedefin kendisinde bitirir: ssh -f -N -J 203.0.113.30 -L 8082:localhost:9000 172.16.0.40, ağa görünmeyen bir hata ayıklama portunu yerelde görünür kılar.
Uzak port yönlendirme
Ters durum — yerel bir servisi genel bir ağ geçidi üzerinden dışa açmak — ssh -R [remote_addr:]remote_port:local_addr:local_port [user@]gateway_addr komutunu kullanır; bu kez ek portu sshd sunucusu açar. Tuzak şu: varsayılan olarak tünel yalnızca ağ geçidinin localhost'una bağlanır, yani servis sadece ağ geçidinin içinden erişilebilir kalır; tüm arayüzlerde yayımlamak için sshd_config içinde GatewayPorts yes gerekir. Bu ayarla ssh -f -N -R 0.0.0.0:8080:localhost:80 203.0.113.30, dizüstü bilgisayarın yalnızca localhost'ta çalışan web sunucusunu ağa açar. Bir varyant, SSH istemcisinin jump host rolünü üstlenip ağ geçidinin ulaşamadığı ev ağındaki bir cihazı dışa açmasını sağlar.
Dinamik yönlendirme: SOCKS proxy olarak SSH
Tek bir yerel portu tek bir hedefe bağlamak yerine ssh -D [local_addr:]local_port, SSH istemcisini yerel bir SOCKS proxy'ye dönüştürür. Her bağlantı kendi hedefini belirtir ve bunu SSH sunucusu çözer; böylece tek bir proxy portu bastion arkasındaki tüm sunucu ve portlara ulaşır: istemci SOCKS konuşabiliyorsa curl --socks5-hostname localhost:1080 172.16.0.40:80 yeterlidir. -R komutundan hedefi kaldırmak aynı fikri sunucu tarafında yansıtır: sshd'nin kendisi SOCKS proxy olur ve bu mod istemcide OpenSSH 7.6 veya üstünü gerektirir.
Bayraklar nasıl akılda tutulur
Velichko'nun özeti kısa: -L uzak bir servisi yerel portta açar, -R yerel bir servisi uzak portta açar, -D yerel bir SOCKS proxy'dir ve hedefsiz -R sunucuda çalışan bir proxy'dir. Akılda tutma yolu: ssh -L local:remote ve ssh -R remote:local — ve yeni portu her zaman sol taraf açar.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.