İçeriğe geç

SSH Yerel ve Uzak Port Yönlendirme Nasıl Çalışır?

Kategori: Ağ Yönetimi, ve Web Sunucuları

SSH tünelleme, iki makine arasında kurulan şifreli bir bağlantı üzerinden belirli portların güvenli bir şekilde taşınmasını sağlayan bir yöntemdir. Normal koşullarda firewall, NAT veya ağ politikaları nedeniyle ulaşılamayan servisler, SSH tüneli sayesinde sanki lokal bir bağlantıymış gibi kullanılabilir.

Sistem Gereksinimleri

Tünelleme konusunu açıklarken birden fazla makineye ihtiyaç vardır çünkü iletişim iki taraf arasında kurulur. Bu nedenle örneklerin tamamı, birden fazla sunucuyu temsil eden konteyner yapılarıyla oluşturulmuştur. Tek bir Linux makinesi, Docker motoru sayesinde bütün laboratuvarları barındırabilir.

Konteynerlerin IP’lerine doğrudan erişim sağlandığı için, bu örnekler Docker Desktop üzerinde birebir aynı şekilde çalışmaz. Test için kısa ömürlü bir sunucu oluşturmak en verimli yöntemdir.

Yerel Port Yönlendirme Nedir? Nasıl Çalışır?

Yerel port yönlendirme, kendi bilgisayarından uzak sunucudaki bir servise ulaşmanı sağlayan tünel türüdür. SSH bağlantısı açıldığında lokal bir porttan gelen trafik şifrelenir ve uzak sunucudaki belirlenen porta iletilir. Böylece kapalı ya da güvenlik duvarının arkasındaki servisler tamamen güvenli bir şekilde lokal makineye taşınmış olur.

Yerel Port Yönlendirme Nasıl Yapılır?

Genellikle dış dünyaya kapalı çalışan bir servise dışarıdan erişmek gerektiğinde tercih edilir. Gerçek bir örnek üzerinden ilerleyelim. Uzak sunucuda çalışan bir MySQL servisi firewall nedeniyle kapalıdır. Bağlanman mümkün değildir.

Fakat şu komutu çalıştırırsak SSh şu şekilde çalışır.

ssh -L 8080:localhost:8080 root@sunucu_ip
  • Laptop’ındaki 8080 → Uzak sunucudaki 8080
  • Trafik tamamen şifreli
  • Port dış dünyaya açılmadan bağlantı sağlanır

MySQL servisi istemcisini açtığında, veritabanı sanki laptopunda çalışıyormuş gibi bağlanırsın. Bu yöntem yönetim paneli, Redis, Elasticsearch gibi servislerde de sıklıkla kullanılır.

Tüneli arka planda açık bırakmak isterseniz aşağıdaki komutu yazabilirsiniz.

ssh -f -N -L ...

Uzak Port Yönlendirme Nasıl Yapılır?

Uzak port yönlendirme, yerel port yönlendirmenin ters mantıkla çalışan halidir. Bu sefer amaç kendi makinenizde çalışan bir servisi dışarıya açmaktır. Yani dinleme yapan taraf SSH sunucusudur.

ssh -R [remote_addr:]remote_port:local_addr:local_port [user@]gateway_addr

Bu işlem sonrasında SSH sunucusu üzerinde belirtilen port dinlemeye açılır. Bu porta gelen trafiğin tamamı, sizin makinenizdeki servis tarafından işlenir.

Uzak Port Yönlendirme Hangi Durumlarda Kullanılır?

  • Lokal olarak geliştirdiğin bir web uygulamasını uzak bir sunucuya test ettirmek
  • Kurumsal ağ arkasındaki bir servise dışarıdan erişmek
  • Evde çalışan IoT cihazlarını dışarıdan yönetmek
  • Firewall arkasındaki API, dashboard veya özel portlara erişim sağlamak
  • VPN açmadan belirli portları dış dünyaya aktarmak

Özel Ağdan Yapılan Uzak Port Yönlendirme

Birçok kullanıcı evde geliştirdiği projeleri internete açamıyor çünkü NAT ve modem port yönlendirmesi her zaman mümkün olmuyor. Böyle durumlarda SSH tüneli en kolay bypass yöntemidir.

ssh -R 9000:localhost:8000 root@sunucu_ip
  • Uzak sunucunun 9000 portuna gelen trafik, evdeki makinenin 8000 portuna akar

Tünelleme Mantığı

Local Forwarding (-L)

Uzak bir servisi lokal makinedeymiş gibi kullanır.

Remote Forwarding (-R)

Lokal bir servisi uzak bir makineye görünür hale getirir

Dynamic Forwarding (-D)

SSH üzerinden çalışan mini bir proxy/VPN oluşturur.

Sonuç olarak SSH tünellemenin temelinde üç farklı yönlendirme tipi bulunur. Bu yapıların çalışma şekli hem günlük sunucu yönetiminde hem de güvenlik duvarı arkasındaki servislerle çalışırken kritik önem taşır. Eğer SSH bağlantılarıyla ilgili daha pratik komut örnekleri görmek istersen, daha önce hazırladığımız rehberimize de göz atabilirsiniz.

Sık Sorulan Sorular

SSH tüneli kurduğumda bağlantı kopuyor veya zaman aşımına düşüyor?

ClientAliveInterval ve ClientAliveCountMax değerlerinin sunucu tarafında yükseltilmesi bağlantıyı sabitler. Ek olarak NAT arkasında idle bağlantıların düşmesini engellemek için lokal tarafta ServerAliveInterval kullanmak gerekir.

Aynı anda birden fazla tünel nasıl kurabilirim?

SSH protokolü aynı bağlantı içinde birden fazla tüneli taşımayı destekler. Hem birden fazla -L, hem de birden fazla -R parametresi aynı komutta kullanılabilir.

Tünel bağlantısını arkada sürekli çalışır halde tutmak için en iyi yöntem nedir?

Tüneli kalıcı hale getirmek için autossh kullanılabilir. Bu araç bağlantı düştüğünde otomatik yeniden kurar, log üretir ve KeepAlive paketlerini düzenli göndererek tüneli stabil tutar

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir