Tünel apt-get SSH İşleri ile… Çoğunlukla


1

Proxmox 4.4 altında bir Linux konteyner çalıştırıyorum. Konteyner Debian Jessie'ye dayanıyor. Versiyonun özellikleri:

root@myHostName:/home/myUserName# uname -a
Linux myHostName 4.4.35-1-pve #1 SMP Fri Dec 9 11:09:55 CET 2016 x86_64 GNU/Linux
root@myHostName:/home/myUserName# cat /etc/debian_version
8.6
root@myHostName:/home/myUserName# cat /etc/issue
Debian GNU/Linux 8 \n \l

Bu kap izole edilmiştir. Tek çıkış yolu SSH tüneli. Ve böylece, paket yönetimi için bir SSH tüneli kullanıyorum (apt-get, vs.). Bu çoğunlukla çalışıyor gibi görünüyor, ancak arada sırada bazı uyarılar / hatalar alıyorum.

İşte orjinal /etc/apt/sources.list:

deb http://ftp.debian.org/debian jessie main contrib
deb http://ftp.debian.org/debian jessie-updates main contrib
deb http://security.debian.org jessie/updates main contrib

İşte /etc/apt/sources.list güncellendi :

deb http://localhost:39860/debian jessie main contrib
deb http://localhost:39860/debian jessie-updates main contrib
deb http://localhost:39861 jessie/updates main contrib

SSH tünelini şu şekilde oluşturuyorum:

ssh -N -L39860:ftp.debian.org:80 -L39861:security.debian.org:80 myRemoteUserName@myRemoteHostname

Apt-get update komutunu çalıştırdığımda ne olur :

root@myHostName:/home/myUserName# apt-get update
Ign http://localhost:39860 jessie InRelease
Hit http://localhost:39860 jessie-updates InRelease
Ign http://localhost:39861 jessie/updates InRelease
Hit http://localhost:39860 jessie Release.gpg
Get:1 http://localhost:39860 jessie-updates/main amd64 Packages/DiffIndex [8392 B]
Hit http://localhost:39860 jessie-updates/contrib amd64 Packages
Hit http://localhost:39860 jessie-updates/contrib Translation-en
Get:2 http://localhost:39860 jessie-updates/main Translation-en/DiffIndex [3196 B]
Ign http://localhost:39861 jessie/updates Release.gpg
Hit http://localhost:39860 jessie Release
Ign http://localhost:39861 jessie/updates Release
Hit http://localhost:39860 jessie/main amd64 Packages
Hit http://localhost:39860 jessie/contrib amd64 Packages
Hit http://localhost:39860 jessie/contrib Translation-en
Hit http://localhost:39860 jessie/main Translation-en
Err http://localhost:39861 jessie/updates/main amd64 Packages
  404  Not Found [IP: ::1 39861]
Err http://localhost:39861 jessie/updates/contrib amd64 Packages
  404  Not Found [IP: ::1 39861]
Ign http://localhost:39861 jessie/updates/contrib Translation-en
Ign http://localhost:39861 jessie/updates/main Translation-en
Fetched 11.6 kB in 9s (1279 B/s)
W: Failed to fetch http://localhost:39861/dists/jessie/updates/main/binary-amd64/Packages  404  Not Found [IP: ::1 39861]

W: Failed to fetch http://localhost:39861/dists/jessie/updates/contrib/binary-amd64/Packages  404  Not Found [IP: ::1 39861]

E: Some index files failed to download. They have been ignored, or old ones used instead.

Sonunda gösterilen uyarıların ve hataların üstesinden nasıl gelebilirim?

Yanıtlar:


3

Yaklaşımınız HTTP protokolünün Host:başlığı nedeniyle çalışmıyor .

Normal koşullar altında, HTTP istemcisi (bu durumda apt-get) Host: ftp.debian.org, sunucuyu birden çok etki alanı barındırıyor olması durumunda hangi web sitesinin yükleneceğini bilmesini sağlayan üstbilgiyi gönderir .

Yaptığınız şey, apt-getgönderme yapmaktır Host: localhost:39860, bu da uzaktaki sunucuda hiçbir şey olmama ihtimaliyle sonuçlanır. Bu, HTTP 404 Bulunamadı hatalarınızı açıklar.


Önerilen Karar

Ana makinenize bir HTTP proxy yerleştirin ve SSH bağlantı noktası iletme yoluyla kabınız için kullanılabilir duruma getirin.

  1. İnternet bağlantılı makinenize Squid yükleyin . Ubuntu / Debian:sudo apt install squid
  2. Bu konfigürasyonu yazınız /etc/squid/squid.conf:

    http_port 8080
    
    acl container src XXX.XXX.XXX.XXX/32
    http_access allow container
    

    XXX.XXX.XXX.XXXKonteynerinizin IP adresi ile değiştirin .

  3. Squid'i ile başlatın veya yeniden başlatın service squid restart.
  4. Bu komutu kullanarak İnternet'e bağlı makinenizden kabınıza bağlanın:

    ssh -R8080:localhost:8080 myRemoteUserName@myRemoteHostname
    

    myRemoteUserName@myRemoteHostnameKapsayıcınıza giriş kimlik bilgileri ile değiştirin .

  5. Kabın /etc/apt/apt.conf.d/80proxyiçinde, aşağıdaki içeriklerle adlandırılmış yeni bir dosya oluşturun :

    Acquire::http::Proxy "http://localhost:8080/";
    
  6. 4. adımdan itibaren bağlantı kurulduğu sürece, konteynerinizin aptpaket yöneticisi şimdi uzaktan taleplerde bulunabilir.

Proxy’nize site kısıtlamaları eklemeniz gerekirse, Yalnızca bir siteye Squid erişimini kısıtla seçeneğini işaretleyin .


Evet, ana bilgisayar Proxmox'tur (sürüm 4.4). Lütfen, Proxmox sunucusunun, içine aldığı Linux kaplarıyla aynı şekilde izole edildiğini unutmayın. Proxmox ana bilgisayarı yalnızca bir SSH tüneli üzerinden, myRemoteHostname olarak adlandırdığım makineye giden erişimine sahip. Proxmox ana bilgisayarına kalamar yükleme yeteneğine sahibim, ancak tünel yaptığım İnternet'e bağlı makineye yükleme yeteneğim yok (yani, myRemoteHostname). Önerilen kararda bunun hangi etkileri var?
Dave,

@Dave: Bu durumda, Squid'i ana bilgisayar yerine İnternet bağlantılı makineye koyun. Bu yeni bilgiyi yansıtmak için cevabımı güncelleyeceğim.
Deltik

İnternet bağlantılı makineye kalamar koyma yeteneğim yok. Bu makinenin yöneticisi değilim ve politika bunu yapmamı engelliyor. :(
Dave,

@Dave: Kuruluşunuzla ilgili gereksinimleri gözden geçirmeniz gerekiyor gibi geliyor. Kaptan ssh -Dİnternet makinenize SOCKS5 proxy ( ) açmanıza izin verilmeyecek gibi geliyor . Başka bir olasılık: İnternet bağlantısı olan başka bir makinede ( other-internet-machine) bir Squid proxy oluşturun ve bununla trafiği iletin ssh -L8080:other-internet-machine:8080 myRemoteUserName@myRemoteHostname.
Deltik

1
@ Omid: Cevabımda bir yazım hatası vardı. portu İnternet makinesinden konteynere iletmek -Lzorundaydı -R. Bu şimdi düzeltildi, böylece Internet makinesinden kaba aktarım kurmak için güncelleştirilmiş komutu kullanabilirsiniz.
Deltik
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.