SSH ile bağlanan istemci üzerinden sunucuya İnternet erişimi verin


17

Benim ev bilgisayar kullanabilir A bir sunucu için SSH ile bağlanmak için B dış ağa erişim engellenir. Diğer bir deyişle, B'den İnternet'e yapılan tüm istekler hata veriyor : Ağa erişilemiyor . Tüm bu istekleri , İnternet'e sınırsız erişimi olan A bilgisayarından geçmek için yönlendirebilir miyim ?

Sunucu B , web sitemden birini barındıran bir sunucudur. Biraz yazılım yüklemek için dosyaları indirmek istiyorum. Ancak bağlantı engellendi. Dosyaları aktarabildim ama karmaşıktı çünkü yazılım sürümleri A ve B'de farklıydı , bu yüzden farklı yerlerde bağımlılıklar ve A ve B'de farklı dosyalar gerektiriyordu .

İnternette arama yaptım ve tersine bir tünele ihtiyacım var gibi görünüyor. Ancak yalnızca bir bağlantı noktasının yönlendirildiği çözümler buldum . Ama ihtiyacım olan şey bu değil, çünkü B'nin A'ya değil, İnternet'e erişmesini istemiyorum .


eğer bu soruların aşağılayıcısı bu yorumu görürse, bize nedenini bildirir misiniz? Cevabı "mümkün olmasa bile, onunla ilgili yanlış bir şey görmüyorum.
strugee


ssh, yerel veya uzak bağlantı noktası iletme yapmanıza olanak tanır - yani B'deki bir uygulama, belirttiğiniz herhangi bir bağlantı noktasını açma girişimi olarak A'ya iletilen yerel bir bağlantı noktası X'i açmaya çalıştığında. Böylece A, bu bağlantı talebini İnternet'e iletmekte özgürdür. Ayrıntılı yanıtların oluşturulmasını kolaylaştıracak hangi bağlantı noktalarını veya protokolleri kullanmaya çalıştığınızı söylemediniz.
Stabledog

Besteci kullanmaya çalışıyorum , bu yüzden paketleri indirmek için github HTTP ve HTTPS istekleri olmalıdır.
AL

Yanıtlar:


8

A Bilgisayarında, daha sonra A Bilgisayarı üzerinden İnternet'e erişmek için B bilgisayarının bağlanacağı bir proxy çalıştırabilirsiniz.

Böyle bir şey

             +----------+            +-----------+
             |          |+----SSH+-->|           |
             |     A    |            |    B      |
             |+--------+|            |           |
  Internet <-++-+PROXY<++<SSH Tunnel--+          |
             |+--------+|            |           |
             +----------+            +-----------+

3128 numaralı bağlantı noktasını dinleyen A'ya kalamar gibi bir proxy yükleyin ve daha sonra bununla sunucuya ssh yapabilirsiniz -
ssh -L 3128:127.0.0.1:3128 user@B

Bu, B'nin A üzerinden internete erişmesine izin verecektir


B'ye bağlandıktan sonra, İnternet'ten gelen talepler A'ya nasıl yönlendirilecek? Değiştirilecek yapılandırma yok mu?
AL

B'de bir proxy sunucusu ayarlamanız gerekir 127.0.0.1:3128
Lawrence

10

@Lawrence ve @ SpiRail'in cevaplarına daha açık ve net adımlar eklemeniz yeterli.

Kurulumu aşağıdaki gibi yapın:

Ana Bilgisayar A'daki Kurulum:

  1. A Sunucusuna proxy sunucu Squid'i yükleyin. Squid varsayılan olarak 3128 numaralı bağlantı noktasını dinler.
    yum install squid
  2. Comment http_access deny allsonra eklemek http_access allow all/etc/squid/squid.conf içinde
  3. Ana Bilgisayar A'nın kendisi, internete bağlanmak için 10.140.78.130:8080 diyelim proxy kullanıyorsa, bu proxy'yi /etc/squid/squid.confaşağıdaki gibi de ekleyin :
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
cache_peer 10.140.78.130 parent 8080 0 no-query default
never_direct allow all

Ana Bilgisayar B'de Kurulum:

  1. / Etc / environment dosyasına aşağıdaki girişleri ekleyin
export http_proxy=http://127.0.0.1:3129
export https_proxy=http://127.0.0.1:3129
  1. source /etc/environment

Şimdi kurulumumuz tamamlandı.

Uzak bağlantı noktası iletme ile SSH tüneli oluşturma

  1. Ana Bilgisayar A'dan aşağıdaki SSH komutunu çalıştırın
    ssh -R 3129:localhost:3128 user@HostB

    Kalıcı SSH tüneli yapmak istiyorsanız,
    autossh -M 20000 -f -NT -R 3129:localhost:3128 user@HostB
    autossh komutunu aşağıdaki gibi kullanabilirsiniz: Yukarıdaki autossh komutunun çalışması için HostA'dan HostB'ye SSH Anahtarları kurulumuna sahip olmanız gerekir

  2. Bu, Host B'nin Host A aracılığıyla internete erişmesine izin verecektir.

İnterneti kontrol etme:

  1. Ana Bilgisayar B'den aşağıdaki komutu çalıştırın
    wget https://google.com

Trafik akış şeması : resim açıklamasını buraya girin


5

@ Lawrence'ın yanıtı, hepsini halletmem için yeterince iyiydi. Ama işte kullandığım daha ayrıntılı adımlar.

Ben bir wifi yönlendirici sabit hat bağlantısı ile ahududu pi internet yönlendirmek için dizüstü bilgisayarları 4g dongle kullanmak için kullanılır.

Eğer sunucunuz bir mac ise: squidman yükleyin http://squidman.net/squidman/

(sadece genel kalamar değil, ben bina ile çok fazla sorun vardı) Varsayılan ayarlar benim için yeterince iyi görünüyordu.

4g'ye bağlan wifi'a bağlan - wifi'nizde statik bir ip yapılandırın ve ağ geçidi adresini kaldırın (gelişmiş şeyler yapmıyorsanız), başka iki varsayılan yol ve çok sinir bozucu olsun. - wifi yönlendiricinizin aynı 192.168.xy aralığını kullanmadığından emin olun (bu durumda farklı bir "x" yapılandırın)

ssh -R 8080:localhost:8080 pi@<ip address of the pi or target machine>

PI'da

export http_proxy=http://localhost:8080

visudo ile metni ekleyin:

Defaults env_keep = "http_proxy https_proxy ftp_proxy"

Şimdi wget işe yarayacak ve böylece paketleri yükleyebilmeniz için sudo apt-get olacaktır.

Git de burada istiyorsanız: /programming/128035/how-do-i-pull-from-a-git-repository-through-an-http-proxy


Cevabınız için teşekkürler. visudoBurada rolü nedir ? Metni nereye ekliyorsunuz? ( sudoWeb
AL

Sorunuzu gerçekten anlamıyorum, ancak terminalde sadece visudo yazıyorsanız ('sudo visudo' ihtiyacınız olabilir) metnin satırını altına ekleyebilirsiniz.
SpiRail

Web barındırma sistemimde root erişimi yok.
AL

Uzun zaman önceydi. Ancak bellek visudo sudoers dosyasını düzenler ve eklenen satır sudo yazılırken bu kullanıcı ortamı değişkenlerinin tutulduğu anlamına gelir. Eğer sudo yapamıyorsanız, yine de bu adıma ihtiyacınız yoktur.
SpiRail
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.