Proxy ortamında serseri nasıl kullanılır?


93

Şirketimin ağı proxy kullanıyor. Bu yüzden kullandığımda vagrant upbana 401 izin hatası gösterdi.

Serseri kullanmak için nasıl bir ayar yapabilirim?


1
bunun için Google'da aradınız mı?
Hayalet Cevap

Üzgünüm, yapmadım, şimdi biliyorum vagrant plugin install vagrant-proxyconf.
ithelloworld

Ancak proxy url'mi yapılandırma dosyasına yükleyip ayarladıktan sonra sonuç aynıydı. 401
ithelloworld

Yanıtlar:


104

Proxyconf'u yükleyin:

vagrant plugin install vagrant-proxyconf

Vagrantfile dosyanızı yapılandırın:

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.*2.0 sürümü itibariyle kullanımdan kaldırılmıştır ve ile değiştirilmiştir config.proxy.*.
Tomalak

config.proxy.https = "https://yourproxy:8080"bu mu httpsyoksa httpikinci satırda mı
eldos

2
ikisi de olabilir. Şirketimde http ve https, http
Alejandro Moreno

31
Tamam, 'serseri eklenti yükle vagrant-proxyconf' çalıştırdığımda proxy'ime çarpıyor mu?
Mark Broadhurst

10
Söylenecek tek şey, bir proxy'nin arkasındaysanız, eklentileri yükleyemezsiniz.
user3426711

87

Proxy'niz kimlik doğrulaması gerektiriyorsa, parolanızı Vagrantfile'da saklamak yerine ortam değişkenini ayarlamak daha iyidir. Ayrıca Vagrantfile dosyanız proxy arkasında olmayan başkaları tarafından da kolaylıkla kullanılabilir.

Mac / Linux için (Bash'de)

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

sonra

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

Windows için dışa aktarma yerine set kullanın.

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

sonra

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

1
Ayrıca, ortamınızda kalmasını istemiyorsanız , yalnızca bir komutta bu ortam değişkeni için VAGRANT_HTTP_PROXY = " user: password @ host: port " (dışa aktarmadan veya ayarlamadan) kaldırabilirsiniz .
maccam912

4
Proxy ayarlarını açıkça ait olmadıkları Vagrantfile'a koymayı gerektirmediği için harika bir çözüm
07'de emrass

7
Windows Powersehell v6.0: $ env: http_proxy = " kullanıcı: şifre @ host: port " $ env: https_proxy = " kullanıcı: şifre @ host: port " serseri eklenti vagrant-proxyconf yükle
Xolani

1
Windows Git Bash kullananlar için, Mac / Linux (Bash'te) talimatlarını kullanın. Örn: export http_proxy = " user: password @ host: port "
Xolani

1
export VAGRANT_HTTPS_PROXY=${https_proxy}Mac / Linux talimatlarında unuttunuz (?) .
Tom Hundt

54

Proxyconf'u kurmak bunu çözecektir, ancak bir proxy'nin arkasında sadece komutu kullanarak bir eklenti kuramazsınız vagrant plugin install, Bundler bir hata verecektir.

Unix benzeri bir sistem kullanıyorsanız, proxy'nizi ortamınızda ayarlayın

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

veya buradan daha ayrıntılı bir yanıt alın: Bir proxy arkasında paketleyici nasıl kullanılır?

bundan sonra proxyconf kurulumu


10
Windows'ta önerdiğiniz şeyi yaptım ama "dışa aktar" yerine "SET" kullandım. Vagrant dosyasında herhangi bir değişiklik yapmadan beklendiği gibi çalıştı.
Daniel Watrous

28

Proxy ayarlarınızı otomatik olarak algılayın ve tüm serseri sanal makinenize enjekte edin

proxy eklentisini yükle

vagrant plugin install vagrant-proxyconf

bu conf'i size özel / kullanıcı VagrantFile ekleyin (tüm projeleriniz için yürütülecektir):

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

şimdi sanal makinenizi hazırlayın!


1
Bu yanıtı beğendim çünkü ana işletim sistemimde zaten bildirmiş olduğum mevcut HTTP_PROXY env değişkenlerini yeniden kullanıyor. Kes-yapıştır ölüm !!
ripvlan

İleriye doğru iyi bir yol gibi görünüyor. Proxy dışına çıkarken devre dışı bırakmaya ne dersiniz? Serseri eklentinin, çeşitli farklı araçların / uygulamaların çalışması için konuk linux'u birden çok yerde deldiği bulundu. Devre dışı bırakmanın basit bir yolu var mı? Böyle bir durum en azından komut satırı işaretinden vagrant reloadçevrilecek ve tek bir düzeltilecek ve yeni ağlara bağlanırken proxy ayarlarını otomatik olarak tespit etmek ve kullanıcıyı uyarmak veya sorunsuz çalışmasını sağlamak en iyisi olabilir. tmatilai.github.io/vagrant-proxyconf devre dışı bırakmadan bahsetti, ancak bu noktaları ele aldığından emin değil.
arntg

Anladığınızdan emin değilim, ancak bu pasaj, proxy eklentisini kurmak için http_proxy env var varlığını test eder. * _Proxy env kullanmıyorsanız, 'etkinleştirilmemiş' (?)
Olmalıdır

11

Windows ana bilgisayarında

bir CMD istemi açın;

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

Yukarıdaki snippet'lerdeki adresi ve bağlantı noktasını durumunuza uygun olanla değiştirin. CMD istemini kapatana kadar yukarıdakiler ayarlanmış olarak kalacaktır. İşinize yararsa, bunları ortam değişkenlerinize kalıcı olarak eklemeyi düşünün, böylece yeni bir CMD istemini her açtığınızda bunları ayarlamanız gerekmez.


9

Windows'ta , proxy ayarlarını belirtmek için bir değişken ayarlamanız, vagrant-proxyconf eklentisini indirmeniz gerekir: ({PROXY_SCHEME} (http: // veya https: //), {PROXY_IP} ve {PROXY_PORT} 'u doğru değerlerle değiştirin)

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

Bundan sonra, proxy ayarlarınızı vagrant dosyasında sabit kodlamak için eklentiyi ekleyebilirsiniz.

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

ve sonra Vagrantfile'ınızda config.proxy.xxx ayarlarını, ortam ayarları değişkenlerinden bağımsız olacak şekilde sağlayabilirsiniz.


SSL sertifikalarını doğrularken hatayı önlemek için sadece ek bir parametre (https'den http'ye rubygem): vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

bu öncekilerden daha iyi bir çözüm çünkü bunun başka bir şeye ihtiyacı yok. Diğer çözümlerin (bir eklenti kurun) bunu yapmak için önce ücretsiz internet erişimini ayarlaması gerekir.
Raul Luna

5

Proxyconf eklentisini kurmak isteyeceksiniz çünkü bu, konuk makineler için proxy'yi VagrantFile'da oldukça basit bir şekilde yapılandırır.

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

Ancak yine de yanlış gidebilecek pek çok şey var. İlk olarak, proxy'nin arkasındayken muhtemelen serseri eklentileri yükleyemezsiniz. Eğer durum buysa, örneğin rubygems.org'dan kaynağı indirmeli ve kaynaktan yüklemelisiniz.

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

Bu sorunu çözerseniz, bir NTLM proxy'sinin arkasında olma şansına sahip olabilirsiniz, bu da, konuk makinelerinizde * nix kullanıyorsanız, gidecek bir yolunuz olduğu anlamına gelir, çünkü NTLM kimlik doğrulaması yerel olarak desteklenmez Birçok yol vardır bunu çözmek için. Bulmacanın bu kısmını çözmek için CNTLM kullandım. Standart yetkilendirme protokolleri ile NTLM arasında tutkal görevi görür

Tam bir inceleme için, kurumsal bir proxy'nin arkasında serseri kurmakla ilgili bu blog girişine bir göz atın


Bunun neden reddedildiğini bilmek isterim. Sorunun nasıl çözüleceğini ve ayrıca karşılaşabileceğiniz diğer olası sorunların nasıl çözüleceğini açıklar
Rune FS

Bu hemen hemen aynı cevap, birçok kez verilmiş değil mi? Buna ek olarak, kurumsal vekillik yapıyorsanız serseri eklentiler almak için ne yapmanız gerektiğini söylemiyor, sadece bunun bir sorun olacağını ve sonra başka bir yere bağlanmanın olduğunu söylüyor.
eis

Şimdi olması gerektiği gibi görünüyor vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Kaynak
Martin

plugin-sourceYerel bir GEM'den yüklemek için kullanmak harika bir fikir , ancak bunu henüz Windows'ta çalıştırmayı başaramadım. Sözdizimimin yanlış olup olmadığından emin değilim, örneğin file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem? Ayrıca @Martin'in yukarıda bahsettiği yaklaşımı da denedim, bu da işe yaramadı çünkü bu durumda hala rubygems ile iletişim kurmaya çalışıyor
Adam Burley

2
Bu benim için çalıştı: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesAnahtar, --plugin-clean-sourcesrubygems'e erişmeye çalışmamasına neden olan
Adam Burley

2

Soru VM Sağlayıcısından bahsetmiyor ama benim durumumda aynı ortamda Virtual Box kullanıyorum. Sanal Kutu GUI'sinde, çalışmasını sağlamak için etkinleştirmem gereken bir seçenek var. Virtual Box uygulaması tercihlerinde bulunur: Dosya >> Tercihler ... >> Proxy . Bunu yapılandırdıktan sonra sorunsuz çalışabildim. Umarım bu ipucu size yardımcı olabilir.


1

Proxy yapılandırmalarınızın ve eklenti kurulumlarınızın Vagrantfile'ınızda olmasını gerçekten istiyorsanız, örneğin yalnızca kurumsal ortamınız için bir Vagrantfile oluşturuyorsanız ve kullanıcıların ortam değişkenlerini düzenlemesini sağlayamıyorsanız, bu benim için cevaptı:

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

(Yapmazsanız, onları diğer yanıtların söylediği gibi ortam değişkenleri olarak ayarlayın ve bunlara config.proxy.http (s) direktiflerindeki env'den bakın.)


1

Paroladaki bazı Özel karakterler proxy'de sorun yaratır. Ya bunlardan kaçının ya da şifrede özel karakterler kullanmaktan kaçının.


1

PowerShell'de http_proxy ve https_proxy ortam değişkenlerini şu şekilde ayarlayabilirsiniz :

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

0

MS Windows'ta bu bizim için çalışır:

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

Ve * nix için eşdeğer:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
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.