Как использовать бродягу в прокси-среде?

В моей сети сети используется прокси. Поэтому, когда я использую vagrant up, он показал мне ошибку разрешения 401.

Как я могу сделать некоторые настройки для использования бродяг?

Ответ 1

Установить proxyconf:

vagrant plugin install vagrant-proxyconf

Настройте свой Vagrantfile:

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

Ответ 2

Если ваш прокси-сервер требует аутентификации, лучше установить переменную окружения, а не хранить ваш пароль в Vagrantfile. Кроме того, ваш Vagrantfile может легко использоваться другими пользователями, не находящимися за прокси-сервером.

Для Mac/Linux (на Bash)

export http_proxy="http://user:[email protected]:port"
export https_proxy="http://user:[email protected]:port"
vagrant plugin install vagrant-proxyconf

затем

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

Для Windows используйте набор вместо экспорта.

set http_proxy=http://user:[email protected]:port
set https_proxy=https://user:[email protected]:port
vagrant plugin install vagrant-proxyconf

затем

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

Ответ 3

Установка proxyconf решит это, но за прокси вы не сможете установить плагин, просто используя команду vagrant plugin install, Bundler вызовет ошибку.

установите свой прокси-сервер в своей среде, если вы используете систему типа unix

export http_proxy=http://user:[email protected]:port

или получите более подробный ответ здесь: Как использовать связующее звено за прокси-сервером?

после этого установите proxyconf

Ответ 4

Автоматически определите свои настройки прокси-сервера и введите их во все ваши бродячие VM

установить прокси-плагин

vagrant plugin install vagrant-proxyconf

добавить этот conf для вас private/user VagrantFile (он будет выполнен для всех ваших проектов):

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

Теперь верните свою виртуальную машину!

Ответ 5

На хосте Windows

откройте приглашение CMD;

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

Подставьте адрес и порт в приведенных выше фрагментах к тому, что подходит для вашей ситуации. Вышеуказанное будет сохранено до тех пор, пока вы не закроете подсказку CMD. Если это сработает для вас, подумайте о том, чтобы добавить их постоянно к переменным среды, чтобы вам не приходилось устанавливать их каждый раз, когда вы открываете новое приглашение CMD.

Ответ 6

В Windows вы должны установить переменную, чтобы указать параметры прокси-сервера, загрузить плагин vagrant-proxyconf: (замените {PROXY_SCHEME} (http://или https://), {PROXY_IP} и {PROXY_PORT} по правильным значениям)

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

После этого вы можете добавить плагин для жесткого кодирования настроек прокси-сервера в бранном файле

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

а затем вы можете указать параметры config.proxy.xxx в своем Vagrantfile, чтобы быть независимыми от переменных параметров среды

Ответ 7

Вы захотите установить плагин proxyconf, так как это делает настройку прокси для гостевых машин довольно прямолинейно в VagrantFile

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

Однако есть немало вещей, которые все еще могут пойти не так. Во-первых, вы, вероятно, не можете установить брандмауэры, когда за прокси-сервером. Если это случай, вы должны скачать источник, например. от rubygems.org и установить из источника

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

Если вы решите эту проблему, вам, возможно, повезло быть за прокси-сервером NTLM, а это значит, что если вы используете * nix на ваших гостевых компьютерах, вам все равно есть способ, потому что проверка подлинности NTLM не поддерживается Есть много способов решить это. Я использовал CNTLM для решения этой части головоломки. Он действует как клей между стандартными протоколами авторизации и NTLM

Чтобы пройти полную прогулку, посмотрите эту запись в блоге о настройке бродяг за корпоративным прокси.

Ответ 8

В вопросе не упоминается поставщик VM, но в моем случае я использую Virtual Box в той же среде. В графическом интерфейсе Virtual Box есть опция, которую мне нужно включить, чтобы она работала. Располагается в настройках приложения Virtual Box: Файл → Настройки... → Прокси. Как только я это настроил, я смог работать без проблем. Надеюсь, этот совет также поможет вам, ребята.

Ответ 9

Если вы действительно хотите, чтобы ваши настройки прокси-сервера и установки плагинов находились в вашем Vagrantfile, например, если вы делаете Vagrantfile только для своей корпоративной среды и не можете изменять параметры среды для пользователей, это был ответ для меня

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

(Если вы этого не сделаете, просто установите их как переменные среды, как говорят другие ответы, и обратитесь к ним из env в директивах config.proxy.http(s).)

Ответ 10

Некоторые специальные символы в пароле создают проблему в прокси. Либо избегайте их, либо избегайте использования специальных символов в пароле.

Ответ 11

В MS Windows это работает для нас:

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

И эквивалент для * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >

Ответ 12

В PowerShell вы можете установить переменные среды http_proxy и https_proxy следующим образом:

$env:http_proxy="http://www-cache-nrs.si.fr.intraorange:3128"
$env:https_proxy="http://www-cache-nrs.si.fr.intraorange:3128"