Bagaimana cara menggunakan gelandangan di lingkungan proxy?

93

Jaringan perusahaan saya menggunakan proxy. Jadi ketika saya menggunakan vagrant up, itu menunjukkan kepada saya kesalahan izin 401.

Bagaimana saya bisa melakukan beberapa pengaturan untuk menggunakan gelandangan?

ithelloworld
sumber
1
sudahkah kamu mencari di Google untuk ini?
Ghost Answer
Maaf, saya tidak. Sekarang saya tahu vagrant plugin install vagrant-proxyconf.
ithelloworld
Tapi setelah saya install dan setel url proxy saya ke file config, hasilnya tetap sama.401
ithelloworld

Jawaban:

104

Instal proxyconf:

vagrant plugin install vagrant-proxyconf

Konfigurasi Vagrantfile Anda:

config.proxy.http     = "http://yourproxy:8080"
config.proxy.https    = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
Alejandro Moreno
sumber
4
config.env_proxy.*tidak digunakan lagi sejak versi 2.0 dan telah diganti oleh config.proxy.*.
Tomalak
config.proxy.https = "https://yourproxy:8080"adalah itu httpsatau httpdi baris kedua
eldos
2
bisa jadi keduanya. Di perusahaan saya, http dan https melalui proxy yang sama yang ada di http
Alejandro Moreno
31
Ok ketika saya menjalankan 'vagrant plugin install vagrant-proxyconf' itu mengenai proxy saya?
Mark Broadhurst
10
Satu hal lagi, jika Anda menggunakan proxy, Anda tidak dapat menginstal plugin.
pengguna3426711
87

Jika proxy Anda memerlukan otentikasi, lebih baik mengatur variabel lingkungan daripada menyimpan kata sandi Anda di Vagrantfile. Juga Vagrantfile Anda dapat digunakan oleh orang lain dengan mudah yang tidak berada di belakang proxy.

Untuk Mac / Linux (di Bash)

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

kemudian

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

Untuk Windows gunakan set, bukan ekspor.

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

kemudian

set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
rjdkolb
sumber
1
Juga, jika Anda tidak ingin itu tinggal di lingkungan Anda, Anda dapat melakukan VAGRANT_HTTP_PROXY = " user: password @ host: port " vagrant up (tanpa ekspor atau set) untuk variabel lingkungan itu hanya pada satu perintah.
maccam912
4
Solusi hebat karena tidak memerlukan pengaturan proxy di Vagrantfile yang jelas-jelas bukan miliknya
emrass
7
Windows Powersehell v6.0: $ env: http_proxy = " user: password @ host: port " $ env: https_proxy = " user: password @ host: port " plugin vagrant install vagrant-proxyconf
Xolani
1
Bagi mereka yang menggunakan Windows Git Bash, gunakan instruksi Mac / Linux (dalam Bash) .eg: export http_proxy = " user: password @ host: port "
Xolani
1
Anda lupa (?) export VAGRANT_HTTPS_PROXY=${https_proxy}Pada instruksi Mac / Linux.
Tom Hundt
54

Menginstal proxyconf akan menyelesaikan masalah ini, tetapi di belakang proxy Anda tidak dapat menginstal plugin hanya dengan menggunakan perintah vagrant plugin install, Bundler akan memunculkan kesalahan.

mengatur proxy Anda di lingkungan Anda jika Anda menggunakan sistem mirip unix

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

atau dapatkan jawaban yang lebih rinci di sini: Bagaimana cara menggunakan bundler di belakang proxy?

setelah ini mengatur proxyconf

pingween
sumber
10
Pada windows saya melakukan apa yang Anda sarankan tetapi menggunakan "SET" daripada "ekspor". Bekerja seperti yang diharapkan tanpa membuat perubahan apa pun pada Vagrantfile.
Daniel Watrous
28

Deteksi otomatis pengaturan proxy Anda dan masukkan ke semua VM gelandangan Anda

instal plugin proxy

vagrant plugin install vagrant-proxyconf

tambahkan conf ini kepada Anda private / user VagrantFile (ini akan dijalankan untuk semua proyek Anda):

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

sekarang naikkan VM Anda!

sangat berbahaya
sumber
1
Saya suka jawaban ini karena menggunakan kembali variabel env HTTP_PROXY yang sudah ada yang sudah saya nyatakan di OS host saya. Mati untuk potong-tempel !!
ripvlan
Sepertinya cara yang baik untuk maju. Bagaimana dengan menonaktifkannya saat keluar dari proxy? Menemukan bahwa plugin gelandangan menekan linux tamu di banyak tempat untuk membuat berbagai alat / aplikasi bekerja. Apakah ada cara sederhana untuk menonaktifkan? Hal tersebut juga setidaknya akan dibalik dari tanda baris perintah dan satu vagrant reloadakan diperbaiki, dan dapat menjadi yang terbaik untuk mendeteksi pengaturan proxy masuk / keluar secara otomatis saat menyambung ke jaringan baru, dan mengingatkan pengguna, atau membuatnya bekerja dengan mulus. tmatilai.github.io/vagrant-proxyconf disebutkan menonaktifkan, tetapi tidak yakin itu membahas poin-poin ini.
arntg
Tidak yakin untuk memahaminya tetapi cuplikan ini menguji keberadaan http_proxy env var untuk menyiapkan plugin proxy. Jika Anda tidak menggunakan * _proxy env, seharusnya 'tidak diaktifkan' (?)
quazardous
11

Di host Windows

buka prompt CMD;

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

Gantikan alamat dan port pada cuplikan di atas untuk apa pun yang sesuai dengan situasi Anda. Di atas akan tetap disetel sampai Anda menutup prompt CMD. Jika berhasil untuk Anda, pertimbangkan untuk menambahkannya secara permanen ke variabel lingkungan Anda sehingga Anda tidak perlu mengaturnya setiap kali Anda membuka prompt CMD baru.

makanan ringan
sumber
9

Di windows , Anda harus menyetel variabel untuk menentukan setelan proxy, unduh plugin vagrant-proxyconf: (ganti {PROXY_SCHEME} (http: // atau https: //), {PROXY_IP} dan {PROXY_PORT} dengan nilai yang benar)

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

Setelah itu, Anda dapat menambahkan plugin ke hardcode pengaturan proxy Anda di file vagrant

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

dan kemudian Anda dapat memberikan pengaturan config.proxy.xxx di Vagrantfile agar tidak bergantung pada variabel pengaturan lingkungan

l.cotonea
sumber
Hanya parameter tambahan (rubygem dari https ke http) untuk menghindari kesalahan saat memverifikasi sertifikat SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38
ini adalah solusi yang lebih baik daripada yang sebelumnya, karena yang ini tidak membutuhkan yang lain. Solusi lain (memasang plugin) perlu menyetel akses internet gratis terlebih dahulu untuk melakukannya.
Raul Luna
5

Anda akan ingin menginstal plugin proxyconf karena ini membuat konfigurasi proxy untuk mesin tamu cukup mudah di VagrantFile

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

Namun, ada beberapa hal yang masih bisa salah. Pertama, Anda mungkin tidak dapat menginstal plugin gelandangan saat berada di belakang proxy. Jika demikian, Anda harus mengunduh sumbernya misalnya dari rubygems.org dan menginstal dari sumber

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

Jika Anda memecahkan masalah itu, Anda mungkin beruntung berada di belakang proxy NTLM, yang berarti bahwa jika Anda menggunakan * nix pada mesin tamu Anda, maka Anda masih memiliki beberapa cara untuk melakukannya, karena otentikasi NTLM tidak didukung secara native Ada banyak cara memecahkan itu. Saya telah menggunakan CNTLM untuk memecahkan bagian dari teka-teki itu. Ini bertindak sebagai perekat antara protokol otorisasi standar dan NTLM

Untuk panduan lengkapnya, lihat entri blog ini tentang pengaturan gelandangan di belakang proxy perusahaan

Rune FS
sumber
Saya akan tertarik untuk mengetahui mengapa ini ditolak. Ini menjelaskan cara menyelesaikan masalah dan juga cara mengatasi potensi masalah lain yang mungkin Anda temui
Rune FS
Bukankah ini jawaban yang hampir sama sudah diberikan beberapa kali? Selain itu, tidak disebutkan apa yang harus dilakukan untuk mendapatkan plugin gelandangan jika Anda menggunakan proxy perusahaan, itu hanya menyatakan bahwa itu akan menjadi masalah dan kemudian menautkan ke tempat lain.
Eis
Sepertinya sekarang sudah seharusnya vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Sumber
Martin
Ide bagus untuk digunakan plugin-sourceuntuk menginstal dari GEM lokal, tetapi saya belum berhasil membuatnya berfungsi di Windows. Saya tidak yakin apakah sintaks saya salah, seperti file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem? Saya juga mencoba pendekatan yang @Martin sebutkan di atas, ini juga tidak berhasil karena masih mencoba menghubungi rubygems dalam kasus itu
Adam Burley
2
Ini berhasil untuk saya: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesKuncinya adalah --plugin-clean-sourcesyang menyebabkannya tidak mencoba mengakses rubygems
Adam Burley
2

Pertanyaannya tidak menyebutkan Penyedia VM tetapi dalam kasus saya, saya menggunakan Kotak Virtual di bawah lingkungan yang sama. Ada opsi di GUI Kotak Virtual yang perlu saya aktifkan untuk membuatnya berfungsi. Terletak di preferensi aplikasi Kotak Virtual: File >> Preferensi ... >> Proxy . Setelah saya mengkonfigurasi ini, saya dapat bekerja tanpa masalah. Semoga tip ini juga bisa membantu kalian.

James
sumber
1

Jika Anda benar-benar ingin konfigurasi proxy dan penginstalan plugin Anda ada di Vagrantfile Anda, misalnya jika Anda membuat Vagrantfile hanya untuk lingkungan perusahaan Anda dan tidak dapat meminta pengguna mengedit variabel lingkungan, ini adalah jawaban untuk saya:

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

(Jika tidak, atur saja sebagai variabel lingkungan seperti jawaban lain dan rujuk dari env di arahan config.proxy.http (s).)

eis
sumber
1

Beberapa karakter khusus dalam kata sandi membuat masalah di proxy. Keluar dari mereka atau hindari memiliki karakter khusus dalam kata sandi.

ernitingoel
sumber
1

Di PowerShell, Anda dapat mengatur variabel lingkungan http_proxy dan https_proxy seperti:

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"
kal3v
sumber
0

Di MS Windows, ini berfungsi untuk kami:

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

Dan yang setara untuk * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
csoria
sumber