프록시 환경에서 방랑자를 사용하는 방법?


92

우리 회사의 네트워크가 프록시를 사용하고 있습니다. 그래서을 사용할 때 vagrant up401 권한 오류가 표시되었습니다.

방랑자를 사용하려면 어떻게 설정해야합니까?


1
이걸 검색해 봤어?
Ghost 답변

미안 해요, 안 했어요. 이제 알아요 vagrant plugin install vagrant-proxyconf.
ithelloworld 2013

하지만 프록시 URL을 설정 파일에 설치하고 설정 한 후 결과는 동일했습니다. 401
ithelloworld

답변:


104

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"

4
config.env_proxy.*은 버전 2.0에서 더 이상 사용되지 않으며 config.proxy.*.
Tomalak 2014 년

config.proxy.https = "https://yourproxy:8080"https또는 http제 라인
eldos

2
둘 다일 수 있습니다. 내 회사 HTTP 및 HTTPS에서 HTTP에 같은 프록시를 통과
알레한드로 모레노

30
좋아, 내가 'vagrant plugin install vagrant-proxyconf'를 실행하면 내 프록시에 도달합니까?
Mark Broadhurst 2015

9
한 가지 언급 할 사항은 프록시 뒤에있는 경우 플러그인을 설치할 수 없다는 것입니다.
user3426711

87

프록시에 인증이 필요한 경우 Vagrantfile에 비밀번호를 저장하는 것보다 환경 변수를 설정하는 것이 좋습니다. 또한 Vagrantfile은 프록시 뒤에 있지 않은 다른 사람들이 쉽게 사용할 수 있습니다.

Mac / Linux의 경우 (Bash)

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

그때

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

Windows의 경우 내보내기 대신 세트를 사용하십시오.

set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host: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

1
또한 환경에 유지하지 않으려면 하나의 명령에서만 해당 환경 변수에 대해 VAGRANT_HTTP_PROXY = " user : password @ host : port "vagrant up (내보내기 또는 설정없이)을 수행 할 수 있습니다.
maccam912

4
분명히 속하지 않는 Vagrantfile에 프록시 설정을 넣을 필요가 없기 때문에 훌륭한 솔루션
emrass

7
Windows Powersehell v6.0 : $ env : http_proxy = " user : password @ host : port "$ env : https_proxy = " user : password @ host : port "
vagrant

1
Windows Git Bash를 사용하는 경우 Mac / Linux (Bash에서) 지침을 사용하십시오. 예 : export http_proxy = " user : password @ host : port "
Xolani

1
export VAGRANT_HTTPS_PROXY=${https_proxy}Mac / Linux 지침에서 (?)를 잊었습니다 .
Tom Hundt

53

proxyconf를 설치하면이 문제가 해결되지만 프록시 뒤에는 단순히 명령을 사용하여 플러그인을 설치할 수 없으며 vagrant plugin installBundler에서 오류가 발생합니다.

유닉스 계열 시스템을 사용하는 경우 환경에서 프록시 설정

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

또는 여기에서 더 자세한 답변을 얻으십시오. 프록시 뒤에서 번 들러를 사용하는 방법?

이 설정 후 proxyconf


10
Windows에서는 제안한대로 수행했지만 "내보내기"대신 "SET"을 사용했습니다. Vagrantfile을 변경하지 않고 예상대로 작동했습니다.
Daniel Watrous

28

프록시 설정을 자동으로 감지하고 모든 방랑자 VM에 주입

프록시 플러그인 설치

vagrant plugin install vagrant-proxyconf

이 conf를 개인 / 사용자 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

이제 VM을 시작하십시오!


1
이 답변은 호스트 OS에서 이미 선언 한 기존 HTTP_PROXY 환경 변수를 재사용하기 때문에 좋아합니다. 잘라 붙이는 죽음 !!
ripvlan 2015

앞으로 좋은 길인 것 같습니다. 프록시 외부로 이동할 때 비활성화하는 것은 어떻습니까? 방랑 플러그인이 여러 곳에서 게스트 리눅스를 펀칭하여 다양한 도구 / 앱이 작동하는 것을 발견했습니다. 비활성화하는 간단한 방법이 있습니까? 이는 또한 최소한 명령 줄 플래그에서 뒤집히고 하나의 vagrant reload문제가 해결 될 것이며 새 네트워크에 연결할 때 자동으로 프록시 설정을 감지하고 사용자에게 경고하거나 원활하게 작동하도록 만드는 것이 가장 좋습니다. tmatilai.github.io/vagrant-proxyconf 는 비활성화에 대해 언급했지만 이러한 점을 해결하는지 확실하지 않습니다.
arntg

잘 모르겠지만이 스 니펫은 http_proxy env var의 존재를 테스트하여 프록시 플러그인을 설정합니다. * _proxy env를 사용하지 않으면 '활성화되지 않음'(?)이어야합니다.
quazardous

11

Windows 호스트에서

CMD 프롬프트를 엽니 다.

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

위의 스 니펫에서 주소와 포트를 상황에 적합한 것으로 대체하십시오. CMD 프롬프트를 닫을 때까지 위의 설정이 유지됩니다. 작동하는 경우 새 CMD 프롬프트를 열 때마다 설정할 필요가 없도록 환경 변수에 영구적으로 추가하는 것이 좋습니다.


9

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 파일에 프록시 설정을 하드 코딩 할 수 있습니다.

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

그런 다음 Vagrantfile에 config.proxy.xxx 설정을 제공하여 환경 설정 변수에 대해 독립적으로 설정할 수 있습니다.


SSL 인증서를 확인하는 동안 오류를 방지하기위한 추가 매개 변수 (https에서 http vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
로의 Rubygem)

이것은 다른 것이 필요하지 않기 때문에 이전 것보다 더 나은 솔루션입니다. 다른 솔루션 (플러그인 설치)을 사용하려면 먼저 무료 인터넷 액세스를 설정해야합니다.
Raul Luna

5

VagrantFile에서 게스트 머신에 대한 프록시를 매우 간단하게 구성 할 수 있으므로 proxyconf 플러그인을 설치하는 것이 좋습니다.

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 사이의 접착제 역할을합니다.

전체 과정을 보려면 회사 프록시 뒤에 방랑자를 설정하는 방법에 대한 이 블로그 항목을 참조하십시오.


나는 이것이 왜 반대표를 던 졌는지 아는 데 관심이 있습니다. 문제를 해결하는 방법과 발생할 수있는 잠재적 인 다른 문제를 해결하는 방법에 대해 설명합니다
Rune FS

이것은 이미 여러 번 제공된 거의 동일한 답변이 아닙니까? 또한 회사 프록시를 사용하는 경우 방랑 플러그인을 얻기 위해해야 ​​할 일을 말하지 않고 문제가 될 것이라고 말한 다음 다른 곳에 연결합니다.
eis

이제이어야합니다 vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. 출처
Martin

plugin-source로컬 GEM에서 설치하는 데 사용 하는 것이 좋지만 Windows에서는 아직 작동하지 않았습니다. 내 구문이 잘못되었는지 확실하지 않습니다.file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem . 나는 또한 @Martin이 위에서 언급 한 접근 방식을 시도했지만,이 경우에도 여전히 rubygems에 연락을 시도하고 있기 때문에 작동하지 않았습니다.
Adam Burley

2
이것은 나를 위해 일했습니다. vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources 열쇠는--plugin-clean-sources 그것을 액세스 젬하려고하지 일으키는
아담 벌리

2

질문에는 VM 공급자가 언급되어 있지 않지만 제 경우에는 동일한 환경에서 Virtual Box를 사용합니다. Virtual Box GUI에는 작동하기 위해 활성화해야하는 옵션이 있습니다. Virtual Box 앱 기본 설정 : 파일 >> 기본 설정 ... >> 프록시에 있습니다. 이것을 구성하면 문제없이 작업 할 수있었습니다. 이 팁이 여러분에게도 도움이되기를 바랍니다.


1

실제로 프록시 구성과 플러그인 설치가 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

(그렇지 않으면 다른 답변과 같이 환경 변수로 설정하고 config.proxy.http (s) 지시문의 env에서 참조하십시오.)


1

암호의 일부 특수 문자는 프록시에서 문제를 만듭니다. 이스케이프하거나 암호에 특수 문자를 사용하지 마십시오.


1

PowerShell에서 다음 과 같이 http_proxyhttps_proxy 환경 변수를 설정할 수 있습니다.

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

0

MS Windows에서는 다음과 같이 작동합니다.

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

그리고 * nix의 경우 :

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.