Jak używać włóczęgi w środowisku proxy?


93

Sieć mojej firmy korzysta z serwera proxy. Więc kiedy używam vagrant up, pokazał mi błąd pozwolenia 401.

Jak mogę ustawić niektóre ustawienia, aby używać włóczęgi?


1
szukałeś tego w Google?
Ghost Answer

Przepraszam, nie zrobiłem, teraz wiem vagrant plugin install vagrant-proxyconf.
ithelloworld

Ale po zainstalowaniu i ustawieniu adresu URL serwera proxy do pliku konfiguracyjnego wynik był taki sam. 401
ithelloworld

Odpowiedzi:


104

Zainstaluj proxyconf:

vagrant plugin install vagrant-proxyconf

Skonfiguruj swój plik Vagrantfile:

config.proxy.http     = "http://yourproxy:8080"
config.proxy.https    = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"

4
config.env_proxy.*jest przestarzały od wersji 2.0 i został zastąpiony przez config.proxy.*.
Tomalak

config.proxy.https = "https://yourproxy:8080"czy to httpsczy httpw drugiej linii
eldos

2
może to być jedno i drugie. W mojej firmie http i https przechodzą przez to samo proxy, które jest w http
Alejandro Moreno.

31
Ok, kiedy uruchamiam „vagrant plugin install vagrant-proxyconf”, to trafia na moje proxy?
Mark Broadhurst

9
Tylko jedna rzecz, o której należy wspomnieć, jeśli korzystasz z serwera proxy, nie możesz instalować wtyczek.
user3426711

87

Jeśli Twój serwer proxy wymaga uwierzytelnienia, lepiej jest ustawić zmienną środowiskową niż przechowywać hasło w pliku Vagrantfile. Również plik Vagrantfile może być łatwo używany przez inne osoby, które nie korzystają z serwera proxy.

Dla Mac / Linux (w Bash)

export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf

następnie

export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

W systemie Windows użyj set zamiast eksportu.

set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf

następnie

set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

1
Ponadto, jeśli nie chcesz, aby pozostawał w twoim środowisku, możesz wykonać VAGRANT_HTTP_PROXY = " użytkownik: hasło @ host: port " vagrant up (bez eksportu lub ustawiania) dla tej zmiennej środowiskowej tylko w jednym poleceniu.
maccam912

4
Świetne rozwiązanie, ponieważ nie wymaga umieszczania ustawień proxy w pliku Vagrantfile, gdzie wyraźnie nie należą
wstyd

7
Windows Powersehell v6.0: $ env: http_proxy = " użytkownik: hasło @ host: port " $ env: https_proxy = " użytkownik: hasło @ host: port " vagrant plugin zainstaluj vagrant-proxyconf
Xolani

1
Użytkownicy korzystający z systemu Windows Git Bash powinni skorzystać z instrukcji dla systemu Mac / Linux (w Bash) .eg: eksport http_proxy = " użytkownik: hasło @ host: port "
Xolani,

1
Zapomniałeś (?) O export VAGRANT_HTTPS_PROXY=${https_proxy}w instrukcjach Mac / Linux.
Tom Hundt

54

Zainstalowanie proxyconf rozwiąże ten problem, ale za proxy nie można zainstalować wtyczki po prostu za pomocą polecenia vagrant plugin install, Bundler zgłosi błąd.

ustaw serwer proxy w swoim środowisku, jeśli używasz systemu podobnego do uniksowego

export http_proxy=http://user:password@host:port

lub uzyskaj bardziej szczegółową odpowiedź tutaj: Jak używać bundlera za proxy?

po tym skonfiguruj proxyconf


10
W systemie Windows zrobiłem to, co sugerujesz, ale użyłem „SET” zamiast „eksportu”. Działał zgodnie z oczekiwaniami bez wprowadzania żadnych zmian w pliku Vagrantfile.
Daniel Watrous

28

Automatycznie wykrywaj ustawienia proxy i wstrzykuj je do wszystkich maszyn wirtualnych włóczęgów

zainstaluj wtyczkę proxy

vagrant plugin install vagrant-proxyconf

dodaj to conf do ciebie prywatnego / użytkownika VagrantFile (zostanie wykonane dla wszystkich twoich projektów):

vi $HOME/.vagrant.d/Vagrantfile

Vagrant.configure("2") do |config|
  puts "proxyconf..."
  if Vagrant.has_plugin?("vagrant-proxyconf")
    puts "find proxyconf plugin !"
    if ENV["http_proxy"]
      puts "http_proxy: " + ENV["http_proxy"]
      config.proxy.http     = ENV["http_proxy"]
    end
    if ENV["https_proxy"]
      puts "https_proxy: " + ENV["https_proxy"]
      config.proxy.https    = ENV["https_proxy"]
    end
    if ENV["no_proxy"]
      config.proxy.no_proxy = ENV["no_proxy"]
    end
  end
end

teraz uruchom swoją maszynę wirtualną!


1
Podoba mi się ta odpowiedź, ponieważ ponownie wykorzystuje istniejące zmienne env HTTP_PROXY, które już zadeklarowałem w moim systemie operacyjnym hosta. Śmierć do wycinania!
ripvlan

Wygląda na dobrą drogę naprzód. A co z wyłączaniem go, gdy wychodzisz poza proxy? Okazało się, że wtyczka włóczęga uderzyła gościa w Linuksa w wielu miejscach, aby różne narzędzia / aplikacje działały. Czy istnieje prosty sposób na wyłączenie? Takie, które również zostaną przynajmniej odwrócone z flagi wiersza poleceń, a pojedynczy vagrant reloadzostanie naprawiony i może być najlepszy do wykrywania ustawień proxy automatycznie przy podłączaniu do nowych sieci i albo ostrzegania użytkownika, albo sprawienia, by działało bezproblemowo. tmatilai.github.io/vagrant-proxyconf wspomniał o wyłączeniu, ale nie jestem pewien, czy dotyczy tych punktów.
arntg

Nie jestem pewien, czy rozumiesz, ale ten fragment kodu testuje istnienie http_proxy env var, aby skonfigurować wtyczkę proxy. Jeśli nie używasz * _proxy env, powinno być `` nie aktywowane '' (?)
quazardous

11

Na hoście z systemem Windows

otwórz monit CMD;

set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443

Zamień adres i port w powyższych fragmentach na odpowiednie dla Twojej sytuacji. Powyższe pozostanie ustawione, dopóki nie zamkniesz monitu CMD. Jeśli to zadziała, rozważ dodanie ich na stałe do zmiennych środowiskowych, aby nie trzeba było ich ustawiać za każdym razem, gdy otwierasz nowy monit CMD.


9

W systemie Windows musisz ustawić zmienną, aby określić ustawienia proxy, pobrać wtyczkę vagrant-proxyconf: (zamień {PROXY_SCHEME} (http: // lub https: //), {PROXY_IP} i {PROXY_PORT} odpowiednimi wartościami)

set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}

Następnie możesz dodać wtyczkę, aby na stałe zakodować ustawienia proxy w pliku włóczęgi

vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org

a następnie możesz podać ustawienia config.proxy.xxx w pliku Vagrantfile, aby były niezależne od zmiennych ustawień środowiskowych


Tylko dodatkowy parametr (rubygem z https do http), aby uniknąć błędów podczas weryfikacji certyfikatów SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

jest to lepsze rozwiązanie niż poprzednie, ponieważ ten nie potrzebuje niczego więcej. Inne rozwiązania (instalacja wtyczki) wymagają w pierwszej kolejności ustawienia bezpłatnego dostępu do internetu.
Raul Luna

5

Będziesz chciał zainstalować wtyczkę proxyconf, ponieważ to sprawia, że ​​konfiguracja proxy dla maszyn gości jest całkiem prosta w VagrantFile

config.proxy.http     = "http://proxy:8888"
config.proxy.https    = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"

Jednak jest kilka rzeczy, które mogą się nie udać. Po pierwsze, prawdopodobnie nie możesz zainstalować wtyczek włóczęgów, gdy jesteś za proxy. W takim przypadku należy pobrać źródło np. Z rubygems.org i zainstalować ze źródła

$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem

Jeśli rozwiążesz ten problem, możesz mieć szczęście przebywać za proxy NTLM, co oznaczaże jeśli używasz * nix na swoich maszynach-gościach to nadal masz jakąś drogę do zrobienia, ponieważ uwierzytelnianie NTLM nie jest obsługiwane natywnie Istnieje wiele sposobów rozwiązania tego problemu. Użyłem CNTLM do rozwiązania tej części układanki. Działa jak klej między standardowymi protokołami autoryzacji a NTLM

Aby uzyskać kompletny przewodnik, zapoznaj się z tym wpisem na blogu dotyczącym konfigurowania włóczęgi za korporacyjnym proxy


Chciałbym wiedzieć, dlaczego głosowano na nie. Wyjaśnia, jak rozwiązać problem, a także jak rozwiązać potencjalne inne problemy, które możesz napotkać
Rune FS

czy nie jest to ta sama odpowiedź, która została już udzielona wiele razy? Ponadto nie mówi, co zrobić, aby uzyskać wtyczki włóczęgów, jeśli jesteś korporacyjnym proxy, po prostu stwierdza, że ​​byłby to problem, a następnie łączy się w innym miejscu.
eis

Wygląda na to, że teraz powinno być vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Źródło
Martin,

Świetny pomysł do plugin-sourcezainstalowania z lokalnego GEM-u, ale nie udało mi się jeszcze uruchomić tego w systemie Windows. Nie jestem pewien, czy moja składnia jest nieprawidłowa, na przykład file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem? Wypróbowałem również podejście, o którym @Martin wspomniał powyżej, to również nie zadziałało, ponieważ w tym przypadku nadal próbuje skontaktować się z rubygemami
Adam Burley,

2
To zadziałało dla mnie: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourceskluczem jest --plugin-clean-sourcesto, że nie próbuje uzyskać dostępu do rubygemów
Adam Burley

2

Pytanie nie wspomina o dostawcy maszyny wirtualnej, ale w moim przypadku korzystam z Virtual Box w tym samym środowisku. W GUI wirtualnego pudełka jest opcja, którą musiałem włączyć, aby działała. Znajduje się w preferencjach aplikacji Virtual Box: Plik >> Preferencje ... >> Proxy . Gdy to skonfigurowałem, mogłem pracować bez problemów. Mam nadzieję, że ta wskazówka również wam pomoże.


1

Jeśli naprawdę chcesz, aby konfiguracje proxy i instalacje wtyczek były w Twoim pliku Vagrantfile, na przykład jeśli tworzysz plik Vagrantfile tylko dla środowiska korporacyjnego i nie możesz pozwolić użytkownikom edytować zmiennych środowiskowych, oto odpowiedź dla mnie:

ENV['http_proxy']  = 'http://proxyhost:proxyport'
ENV['https_proxy'] = 'http://proxyhost:proxyport'

# Plugin installation procedure from http://stackoverflow.com/a/28801317
required_plugins = %w(vagrant-proxyconf)

plugins_to_install = required_plugins.select { |plugin| not Vagrant.has_plugin? plugin }
if not plugins_to_install.empty?
  puts "Installing plugins: #{plugins_to_install.join(' ')}"
  if system "vagrant plugin install #{plugins_to_install.join(' ')}"
    exec "vagrant #{ARGV.join(' ')}"
  else
    abort "Installation of one or more plugins has failed. Aborting."
  end
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.proxy.http     = "#{ENV['http_proxy']}"
  config.proxy.https    = "#{ENV['https_proxy']}"
  config.proxy.no_proxy = "localhost,127.0.0.1"
  # and so on

(Jeśli nie, po prostu ustaw je jako zmienne środowiskowe, tak jak mówią inne odpowiedzi, i odwołaj się do nich z env w dyrektywach config.proxy.http (s).)


1

Niektóre znaki specjalne w haśle powodują problemy w proxy. Możesz ich uciec lub unikać znaków specjalnych w haśle.


1

W PowerShell możesz ustawić zmienne środowiskowe http_proxy i https_proxy w następujący sposób:

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"

0

W MS Windows działa to dla nas:

set http_proxy=< proxy_url >
set https_proxy=< proxy_url >

I odpowiednik dla * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.