SSH Tüneli Nedir? VPN Yerine Kullanılır mı?
Tek bağlantı üzerinden port yönlendirme, SOCKS proxy kurulumu ve sınırları.
SSH'in bilinen işi uzak sunucuya bağlanıp komut çalıştırmak. İkinci bir işi daha var: kurduğu şifreli bağlantının içinden başka bağlantıları taşımak. Buna tünel deniyor.
Bağlantının kendisini nasıl kuracağınızı SSH bağlantısı kurma yazısında anlattık. Burada o bağlantıyı bir yol olarak kullanıyoruz.
Üç tünel türü, üç ayrı sorun
| Bayrak | Ne yapar | Hangi sorunu çözer |
|---|---|---|
| -L | Yerel portu uzaktaki bir servise bağlar | Uzaktaki kapalı servise erişmek |
| -R | Uzak portu yerel bir servise bağlar | Kendi makinenizdekini dışarı açmak |
| -D | Yerel SOCKS proxy açar | Tarayıcı trafiğini sunucudan geçirmek |
-L: uzaktaki kapalı servise erişmek
En yaygın kullanım. Uzak sunucuda bir veritabanı çalışıyor ama güvenlik gereği yalnızca kendi içinden erişilebilir durumda. Dışarı açmak yerine tünel kuruyorsunuz:
ssh -L 5432:localhost:5432 kullanici@sunucu
Artık kendi bilgisayarınızdaki 5432 numaralı port, sunucunun içindeki 5432'ye bağlı. Uygulamanız "localhost" a bağlanıyor; trafik şifreli kanaldan gidiyor.
Kazanç güvenlik: veritabanı portunu internete hiç açmıyorsunuz. Açık bırakılan portların riskini ayrı bir yazıda anlattık.
-R: kendi makinenizdekini dışarı açmak
Ters yön. Yerelde çalışan bir servisi, dışarıdan erişilebilen bir sunucu üzerinden açıyorsunuz:
ssh -R 8080:localhost:3000 kullanici@sunucu
Sunucunun 8080 portuna gelen istekler sizin makinenizdeki 3000'e iniyor.
Bu, port açamayan bağlantılar için gerçek bir çözüm: CGNAT arkasındaysanız modemde kural yazamazsınız ama dışarıdaki bir sunucuya siz bağlandığınız için tünel çalışır.
Uzak sunucudaki portun dışarıya açılması için sunucu ayarında
GatewayPorts açık olmalı; kapalıysa port yalnızca sunucunun
kendi içinden görünür.
-D: tarayıcı trafiğini sunucudan geçirmek
ssh -D 1080 kullanici@sunucu
Bu komut bilgisayarınızda bir SOCKS proxy açıyor. Tarayıcınızın proxy ayarına 127.0.0.1:1080 yazınca
o tarayıcının trafiği sunucudan çıkıyor.
Sonuç VPN'e benziyor ama aynı şey değil: yalnızca proxy ayarı yapılmış uygulamalar tünelden geçiyor. Ayarı nereye yazacağınızı Chrome ve Windows yazılarında anlattık.
VPN yerine geçer mi?
Hayır. Dört fark var ve üçü SSH'in aleyhine:
| SSH tüneli | VPN | |
|---|---|---|
| Kapsam | Ayarladığınız uygulamalar | Bütün cihaz |
| UDP trafiği | Taşımaz | Taşır |
| Kurulum | Tek komut, sunucu gerekir | Uygulama kurmak yeter |
| DNS sorguları | Ayrıca ayar ister | Tünelden geçer |
İkinci satır oyun ve görüntülü görüşme için belirleyici: ikisi de UDP kullanıyor ve SSH tüneli UDP taşımıyor.
Dördüncü satır gizlilik açısından önemli: SOCKS proxy kullanırken tarayıcı ad çözümlemeyi yerel olarak yaparsa hangi siteye gittiğiniz yine görünür. Firefox'ta bunun için ayrı bir ayar var; Chrome'da davranış eklentiye göre değişiyor.
Yani SSH tüneli bir araç, VPN bir katman. Tek bir servise erişmek için tünel, genel gizlilik için VPN doğru seçim.
Tünelin koptuğu durumlar
-
Uzun süre işlem olmayınca kapanıyor. Sunucu boşta
kalan oturumu düşürüyor;
ServerAliveInterval 60ayarı bunu önlüyor. - Ağ değişince kopuyor. Wi-Fi'dan mobil veriye geçtiğinizde oturum düşer; yeniden bağlanmak gerekir.
- Port zaten kullanımda hatası. Aynı yerel portu iki kez tünellemeye çalışıyorsunuzdur; başka bir numara seçin.
Kalıcı kullanacaksanız bağlantıyı koptuğunda yeniden kuran araçlar var (autossh gibi); elle her seferinde komut yazmaktan daha güvenilir.
Güvenlik notu
Tünel, SSH sunucusuna erişimi olan herkesin kullanabileceği bir yol
açıyor. Sunucu tarafında iki şey önemli: parola yerine
anahtar kullanmak ve gereksizse AllowTcpForwarding
ayarını kapatmak.
22 numaralı portun güvenliğini ve anahtar kurulumunu SSH portu yazısında ele aldık.
Sıkça sorulan sorular
SSH tüneli nedir?
SSH bağlantısının içinden başka bağlantıları taşıma yöntemidir. Şifreli kanal kurulduktan sonra bir portun trafiği o kanaldan geçirilir.
-L ve -R arasındaki fark ne?
-L yerel bir portu uzaktaki servise bağlar; uzak sunucudaki kapalı bir veritabanına erişmek için kullanılır. -R tersidir: kendi makinenizdeki servisi uzak sunucu üzerinden dışarı açar.
SSH tüneli VPN yerine geçer mi?
Geçmez. Yalnızca ayarladığınız uygulamaları kapsar, UDP trafiğini taşımaz ve DNS sorguları ayrıca ayar ister. Oyun ve görüntülü görüşme UDP kullandığı için tünelden geçmez.
CGNAT arkasındayım, tünel işime yarar mı?
Yarar. Modemde port yönlendirme yapamasanız da dışarıdaki bir sunucuya siz bağlandığınız için -R ile yerel servisinizi o sunucu üzerinden açabilirsiniz.
Tünel neden sürekli kopuyor?
Boşta kalan oturumları sunucu düşürüyor olabilir; ServerAliveInterval ayarı bunu önler. Ağ değiştirdiğinizde (Wi-Fi’dan mobil veriye) oturum zaten düşer ve yeniden kurulması gerekir.