จะใช้คนจรจัดในสภาพแวดล้อมพร็อกซีได้อย่างไร?


93

เครือข่าย บริษัท ของฉันใช้พร็อกซี ดังนั้นเมื่อฉันใช้vagrant upมันแสดงให้ฉันเห็นข้อผิดพลาดการอนุญาต 401

ฉันจะตั้งค่าบางอย่างเพื่อใช้คนจรจัดได้อย่างไร


1
คุณ googled สำหรับสิ่งนี้หรือไม่
Ghost Answer

ขอโทษฉันไม่ได้ตอนนี้ฉันรู้vagrant plugin install vagrant-proxyconfแล้ว
ithelloworld

แต่หลังจากที่ฉันติดตั้งและตั้งค่า url พร็อกซีของฉันเป็นไฟล์ config ผลลัพธ์ก็เหมือนเดิม 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

config.proxy.https = "https://yourproxy:8080"นั่นคือhttpsหรือhttpในบรรทัดที่สอง
eldos

2
อาจเป็นได้ทั้งสองอย่าง ใน บริษัท ของฉัน http และ https ต้องใช้พร็อกซีเดียวกันซึ่งอยู่ใน http
Alejandro Moreno

31
ตกลงเมื่อฉันเรียกใช้ 'vagrant plugin install vagrant-proxyconf' มันกระทบกับพร็อกซีของฉันหรือไม่
Mark Broadhurst

10
มีเพียงสิ่งเดียวที่จะกล่าวถึงหากคุณใช้พร็อกซีคุณจะไม่สามารถติดตั้งปลั๊กอินได้
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 plugin install vagrant-proxyconf
Xolani

1
สำหรับผู้ที่ใช้ Windows Git Bash ให้ใช้คำแนะนำ Mac / Linux (ใน Bash) eg: export http_proxy = " user: password @ host: port "
Xolani

1
คุณลืม (?) export VAGRANT_HTTPS_PROXY=${https_proxy}ในคำแนะนำ Mac / Linux
Tom Hundt

54

การติดตั้ง proxyconf จะช่วยแก้ปัญหานี้ได้ แต่หลังพร็อกซีคุณไม่สามารถติดตั้งปลั๊กอินได้โดยใช้คำสั่ง vagrant plugin install Bundler จะแสดงข้อผิดพลาด

ตั้งค่าพร็อกซีของคุณในสภาพแวดล้อมของคุณหากคุณใช้ระบบ unix like

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

หรือรับคำตอบโดยละเอียดที่นี่: จะใช้บันเดิลเลอร์หลังพร็อกซีได้อย่างไร

หลังจากนี้ตั้งค่า proxyconf


10
ใน windows ฉันทำตามที่คุณแนะนำ แต่ใช้ "SET" แทน "export" ทำงานตามที่คาดไว้โดยไม่ทำการเปลี่ยนแปลงใด ๆ กับ Vagrantfile
Daniel Watrous

28

ตรวจจับการตั้งค่าพร็อกซีของคุณโดยอัตโนมัติและฉีดเข้าไปใน VM คนจรจัดทั้งหมดของคุณ

ติดตั้งปลั๊กอินพร็อกซี

vagrant plugin install vagrant-proxyconf

เพิ่มคอนฟิกนี้ให้กับคุณส่วนตัว / ผู้ใช้ 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
ฉันชอบคำตอบนี้เพราะใช้ตัวแปร HTTP_PROXY env ที่มีอยู่ซึ่งฉันได้ประกาศไว้ในระบบปฏิบัติการโฮสต์ของฉันซ้ำ ตายเพื่อตัดแปะ !!
ripvlan

ดูเหมือนเป็นหนทางที่ดีในอนาคต การปิดใช้งานเมื่อออกนอกพร็อกซีล่ะ พบว่าปลั๊กอินคนจรจัดเจาะ linux ของแขกในหลาย ๆ ที่เพื่อให้เครื่องมือ / แอพต่างๆทำงานได้ มีวิธีง่ายๆในการปิดใช้งานหรือไม่? อย่างน้อยก็จะถูกพลิกจากแฟล็กบรรทัดคำสั่งและรายการเดียวvagrant reloadจะแก้ไขได้และอาจเป็นการดีที่สุดในการตรวจจับการตั้งค่าพร็อกซีเข้า / ออกโดยอัตโนมัติเมื่อเชื่อมต่อกับเครือข่ายใหม่และแจ้งเตือนผู้ใช้หรือทำให้ทำงานได้อย่างราบรื่น tmatilai.github.io/vagrant-proxyconfกล่าวถึงการปิดใช้งาน แต่ไม่แน่ใจว่าจะจัดการกับจุดเหล่านี้
arntg

ไม่แน่ใจว่าจะเข้าใจ แต่ตัวอย่างนี้ทดสอบการมีอยู่ของ http_proxy env var เพื่อตั้งค่าปลั๊กอินพร็อกซี หากคุณไม่ได้ใช้ * _proxy env มันควรจะ 'ไม่เปิดใช้งาน' (?)
ค่อนข้างแย่

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 plugin install vagrant-proxyconf --plugin-source http://rubygems.org

จากนั้นคุณสามารถให้การตั้งค่า config.proxy.xxx ใน Vagrantfile ของคุณเป็นอิสระกับตัวแปรการตั้งค่าสภาพแวดล้อม


เพียงพารามิเตอร์เพิ่มเติม (rubygem จาก https ถึง http) เพื่อหลีกเลี่ยงข้อผิดพลาดขณะตรวจสอบใบรับรอง SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

นี่เป็นทางออกที่ดีกว่าก่อนหน้านี้เพราะอันนี้ไม่ต้องการอย่างอื่น โซลูชันอื่น ๆ (ติดตั้งปลั๊กอิน) จำเป็นต้องตั้งค่าการเข้าถึงอินเทอร์เน็ตฟรีก่อนจึงจะทำได้
Raul Luna

5

คุณจะต้องติดตั้งปลั๊กอิน 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

สำหรับขั้นตอนทั้งหมดให้ดูที่รายการบล็อกเกี่ยวกับการตั้งค่าคนจรจัดหลังพร็อกซีขององค์กร


ฉันสนใจที่จะทราบว่าเหตุใดจึงมีการโหวตไม่ลง จะอธิบายวิธีแก้ปัญหาและวิธีแก้ปัญหาอื่น ๆ ที่อาจเกิดขึ้นที่คุณอาจพบ
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 กล่าวไว้ข้างต้นแล้ว แต่ก็ไม่ได้ผลเนื่องจากยังคงพยายามติดต่อทับทิมในกรณีนั้น
Adam Burley

2
สิ่งนี้ใช้ได้ผลสำหรับฉัน: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesกุญแจสำคัญคือ--plugin-clean-sourcesสิ่งที่ทำให้ไม่พยายามเข้าถึงทับทิม
Adam Burley

2

คำถามไม่ได้กล่าวถึงผู้ให้บริการ VM แต่ในกรณีของฉันฉันใช้ Virtual Box ภายใต้สภาพแวดล้อมเดียวกัน มีตัวเลือกใน Virtual Box GUI ที่ฉันต้องเปิดใช้เพื่อให้มันใช้งานได้ ตั้งอยู่ในเสมือนการตั้งค่าแอป Box: ไฟล์ >> Preferences ... >> พร็อกซี่ เมื่อกำหนดค่าแล้วก็สามารถทำงานได้โดยไม่มีปัญหา หวังว่าเคล็ดลับนี้จะช่วยคุณได้


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

(หากไม่เป็นเช่นนั้นให้ตั้งค่าเป็นตัวแปรสภาพแวดล้อมเหมือนที่คำตอบอื่น ๆ พูดและอ้างอิงจาก env ใน config.proxy.http (s) directives)


1

อักขระพิเศษบางตัวในรหัสผ่านสร้างปัญหาในพร็อกซี หลีกเลี่ยงพวกเขาหรือหลีกเลี่ยงการมีอักขระพิเศษในรหัสผ่าน


1

ใน PowerShell คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมhttp_proxyและhttps_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.