Android

Ssh tünel oluşturma (port yönlendirme)

How to Connect to your Ubuntu Server with SSH?

How to Connect to your Ubuntu Server with SSH?

İçindekiler:

Anonim

SSH tüneli veya SSH bağlantı noktası iletme, bir istemci ile bir sunucu makinesi arasında hizmet bağlantı noktalarının geçirilebileceği şifreli bir SSH bağlantısı oluşturma yöntemidir.

SSH iletme, VNC veya FTP gibi şifrelenmemiş bir protokol kullanan hizmetlerin ağ verilerini taşımak, coğrafi kısıtlamalı içeriğe erişmek veya ara güvenlik duvarlarını atlamak için kullanışlıdır. Temel olarak, herhangi bir TCP bağlantı noktasını iletebilir ve trafiği güvenli bir SSH bağlantısı üzerinden tünelleyebilirsiniz.

Üç tür SSH bağlantı noktası iletme vardır:

  • Yerel Bağlantı Noktası Yönlendirme. - Bağlantıyı istemci ana bilgisayardan SSH sunucu ana bilgisayarına ve ardından hedef ana bilgisayar bağlantı noktasına yönlendirir. - Bir bağlantı noktasını sunucu ana bilgisayarından istemci ana bilgisayara ve ardından hedef ana bilgisayar bağlantı noktasına iletir. - Çeşitli bağlantı noktaları arasında iletişime izin veren SOCKS proxy sunucusu oluşturur.

, yerel, uzak ve dinamik şifreli SSH tünellerini nasıl kuracağımız hakkında konuşacağız.

Yerel Bağlantı Noktası İletme

Yerel bağlantı noktası iletme, yerel (ssh istemci) makinedeki bir bağlantı noktasını uzaktaki (ssh sunucu) makinedeki bir bağlantı noktasına iletmenize olanak tanır; bu daha sonra hedef makinedeki bir bağlantı noktasına iletilir.

Bu tür iletimlerde SSH istemcisi belirli bir bağlantı noktasını dinler ve o bağlantı noktasına olan herhangi bir bağlantıyı uzak SSH sunucusundaki belirtilen bağlantı noktasına bağlar ve daha sonra hedef makinedeki bir bağlantı noktasına bağlanır. Hedef makine uzak SSH sunucusu veya başka bir makine olabilir.

Yerel bağlantı noktası iletme çoğunlukla veritabanı veya VNC sunucusu gibi dahili bir ağdaki uzak bir hizmete bağlanmak için kullanılır.

Linux, macOS ve diğer Unix sistemlerinde yerel bağlantı noktası iletme oluşturmak için -L seçeneğini ssh istemcisine ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Kullanılan seçenekler aşağıdaki gibidir:

  • LOCAL_PORT - Yerel makine ip ve bağlantı noktası numarası. LOCAL_IP atlandığında, ssh istemcisi localhost'a bağlanır. DESTINATION:DESTINATION_PORT - Hedef makinenin IP'si veya ana bilgisayar adı ve bağlantı noktası. SERVER_IP - Uzak SSH kullanıcısı ve sunucu IP adresi.

LOCAL_PORT olarak 1024 büyük herhangi bir bağlantı noktası numarasını kullanabilirsiniz. 1024 küçük bağlantı noktası numaraları ayrıcalıklı bağlantı noktalarıdır ve yalnızca kök tarafından kullanılabilir. SSH sunucunuz 22 dışında bir bağlantı noktasını dinliyorsa (varsayılan) -p seçeneğini kullanın.

Hedef ana bilgisayar adı SSH sunucusundan çözümlenebilir olmalıdır.

Diyelim ki, dahili (özel) bir ağda pub001.host makinesinde, pub001.host makinesinden erişilebilen 3306 numaralı bağlantı noktasında pub001.host ve yerel makine mysql istemcinizi kullanarak veritabanı sunucusuna bağlanmak istediğiniz bir mysql veritabanı sunucunuz var. Bunu yapmak için bağlantıyı şu şekilde iletebilirsiniz:

ssh -L 3336:db001.host:3306 [email protected]

Komutu çalıştırdıktan sonra, uzak SSH kullanıcı şifresini girmeniz istenir. Girdikten sonra, uzak sunucuda oturum açacaksınız ve SSH tüneli kurulacak. SSH anahtar tabanlı kimlik doğrulaması ayarlamak ve parola girmeden sunucuya bağlanmak iyi bir fikirdir.

Şimdi yerel makine veritabanı istemcinizi 127.0.0.1:3336 yönlendirirseniz, bağlantı bir ara sunucu görevi görecek pub001.host makinesi aracılığıyla db001.host:3306 MySQL sunucusuna iletilir.

Tek bir ssh komutunda birden çok bağlantı noktasını birden çok hedefe yönlendirebilirsiniz. Örneğin, db002.host makinesinde çalışan başka bir MySQL veritabanı sunucunuz var ve yerel istemcinizden her iki sunucuya da bağlanmak istiyorsunuz:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

İkinci sunucuya bağlanmak için 127.0.0.1:3337 kullanırsınız.

Hedef ana bilgisayar, hedef ana bilgisayar IP'sini veya ana bilgisayar adını belirtmek yerine SSH sunucusuyla aynı olduğunda localhost kullanabilirsiniz.

Aynı sunucuda çalışan ve dışarıdan erişilemeyen VNC üzerinden uzak bir makineye bağlanmanız gerektiğini varsayalım. Kullanacağınız komut:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

-f seçeneği, ssh komutuna arka planda çalışmasını ve -N uzak komut -f söyler. VNC ve SSH sunucusu aynı ana bilgisayarda çalıştığı için localhost kullanıyoruz.

Uzak Port Yönlendirme

Uzak port yönlendirme, yerel port yönlendirmenin tersidir. Uzak (ssh sunucusu) makinedeki bir bağlantı noktasını yerel (ssh istemci) makinedeki bir bağlantı noktasına iletmenize olanak tanır; bu, daha sonra hedef makinedeki bir bağlantı noktasına iletilir.

Bu tür iletimlerde SSH sunucusu belirli bir bağlantı noktasını dinler ve o bağlantı noktasına olan herhangi bir bağlantıyı yerel SSH istemcisinde belirtilen bağlantı noktasına tüneller ve daha sonra hedef makinedeki bir bağlantı noktasına bağlanır. Hedef makine yerel veya başka herhangi bir makine olabilir.

Linux, macOS ve diğer Unix sistemlerinde uzak bağlantı noktası iletme oluşturmak için -R seçeneğini ssh istemcisine ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Kullanılan seçenekler aşağıdaki gibidir:

  • REMOTE_PORT - Uzak SSH sunucusundaki IP ve bağlantı noktası numarası. Boş bir REMOTE , uzak SSH sunucusunun tüm arabirimlere bağlanacağı anlamına gelir. DESTINATION:DESTINATION_PORT - Hedef makinenin IP'si veya ana bilgisayar adı ve bağlantı noktası. SERVER_IP - Uzak SSH kullanıcısı ve sunucu IP adresi.

Yerel port yönlendirme çoğunlukla dışarıdan birine dahili hizmete erişim sağlamak için kullanılır.

Yerel makinenizde bir web uygulaması geliştirdiğinizi ve diğer geliştiricinize bir önizleme göstermek istediğinizi varsayalım. Herkese açık bir IP'niz yok, bu nedenle diğer geliştirici uygulamaya İnternet üzerinden erişemiyor.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Yukarıdaki komut, ssh sunucusunun 8080 bağlantı noktasını dinlemesini ve bu bağlantı noktasından 3000 numaralı bağlantı noktasında yerel makinenize gelen tüm trafiği tünellemesini sağlayacaktır.

Şimdi diğer geliştiriciniz tarayıcısına the_ssh_server_ip:8080 ve müthiş uygulamanızı önizleyebilir.

Dinamik Bağlantı Noktası Yönlendirme

Dinamik bağlantı noktası iletme, yerel (ssh istemci) makinede bir SOCKS proxy sunucusu olarak görev yapan bir soket oluşturmanıza olanak tanır. İstemci bu bağlantı noktasına bağlandığında, bağlantı uzak (ssh sunucusu) makineye iletilir ve bu da daha sonra hedef makinedeki dinamik bir bağlantı noktasına iletilir.

Bu şekilde, SOCKS proxy'yi kullanan tüm uygulamalar SSH sunucusuna bağlanacak ve sunucu tüm trafiği asıl hedefine iletecektir.

Linux'ta, dinamik bir port yönlendirme (SOCKS) oluşturmak için macOS ve diğer Unix sistemlerinde -D seçeneğini ssh istemcisine ssh :

ssh -D LOCAL_PORT SSH_SERVER

Kullanılan seçenekler aşağıdaki gibidir:

  • LOCAL_PORT - Yerel makine ip ve bağlantı noktası numarası. LOCAL_IP atlandığında, ssh istemcisi localhost'a bağlanır. SERVER_IP - Uzak SSH kullanıcısı ve sunucu IP adresi.

Dinamik bağlantı noktası yönlendirmenin tipik bir örneği, web tarayıcı trafiğini bir SSH sunucusu üzerinden tünellemektir.

Aşağıdaki komut, 9090 numaralı bağlantı noktasında bir SOCKS tüneli oluşturur:

ssh -D 9090 -N -f [email protected]

Tünel oluşturulduktan sonra uygulamanızı kullanmak üzere yapılandırabilirsiniz. Bu makalede, Firefox ve Google Chrome tarayıcısının SOCKS proxy'sini kullanacak şekilde nasıl yapılandırılacağı açıklanmaktadır.

Bağlantı noktası yönlendirme, düşündüğü trafiği tünellemek istediğiniz her uygulama için ayrı ayrı yapılandırılmalıdır.

Windows'ta SSH Tünel Oluşturma

Windows kullanıcıları PuTTY SSH istemcisini kullanarak SSH tünelleri oluşturabilir. PuTTY'yi buradan indirebilirsiniz.

  1. Putty'yi başlatın ve Host name (or IP address) alanına SSH sunucusu IP Adresini girin.

    Kullanıcı adınızı ve şifrenizi soran yeni bir pencere görünecektir. Kullanıcı adınızı ve şifrenizi girdikten sonra sunucunuza giriş yapacak ve SSH tüneli başlatılacaktır.

    Ortak anahtar kimlik doğrulamasını ayarlamak, bir şifre girmeden sunucunuza bağlanmanızı sağlar.

Sonuç

SSH tünellerini nasıl ayarlayacağınızı ve trafiği güvenli bir SSH bağlantısı üzerinden nasıl yönlendireceğinizi gösterdik. Kullanım kolaylığı için SSH tünelini SSH yapılandırma dosyanızda tanımlayabilir veya SSH tünelini ayarlayacak bir Bash takma adı oluşturabilirsiniz.

ssh güvenlik