'apt-get' ไม่ทำงานกับพร็อกซี


52

สำหรับคำสั่ง

sudo apt-get update

ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

W: Failed to fetch http://ch.archive.ubuntu.com/ubuntu/dists/maverick-updates/multiverse/binary-i386/Packages.gz  
407  Proxy Authentication Required (The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )

ฉันใช้ Ubuntu 10.10 ติดตั้งบน Windows XP โดยใช้ VirtualBox สำหรับการเชื่อมต่ออินเทอร์เน็ตฉันใช้พร็อกซีเซิร์ฟเวอร์พร้อมการตรวจสอบสิทธิ์ ฉันพยายามใช้gnome-network-proxyเครื่องมือเพื่อตั้งค่าการตั้งค่าพร็อกซีทั้งระบบ

หลังจากนั้น/etc/environmentได้รับการปรับปรุงโดยhttp_proxyตัวแปรที่มีรูปแบบhttp://my_proxy:port/ไม่มีข้อมูลการตรวจสอบ

ฉันตรวจสอบสิ่งนี้ด้วย Firefox เบราว์เซอร์ขอให้ฉันเข้าสู่ระบบและรหัสผ่านและทุกอย่างทำงานได้ดี น่าเสียดายที่มันไม่ใช่กรณีที่ฉลาด ฉันยังมีความพยายามที่จะทำตามที่อธิบายไว้ที่นี่ น่าเสียดายที่มันไม่ทำงาน

อาจเกี่ยวข้องกับข้อเท็จจริงที่ว่าพร็อกซีอยู่ในโดเมน Windows แนวคิดใดบ้าง

ชื่อของฉันคือพร็อกซี่http-พร็อกซี่ นี่ ' - ' เป็นอักขระพิเศษหรือไม่


2
คุณใช้พร็อกซีเครือข่ายทั่วโลกภายใต้ระบบ -> การตั้งค่า -> เครือข่ายพร็อกซีและใช้การตั้งค่าแบบหมุนได้หรือไม่?
DemonWareXT

คุณสามารถลองใช้เครื่องมือ GUI ที่ใช้งานง่ายGrrProxy
Renae Lider

คำตอบ:


52

สำหรับเครือข่ายองค์กรของฉันฉันได้รับชื่อผู้ดูแลระบบในรูปแบบ:

http://[username]:[password]@[proxy-webaddress]:[port]

สำหรับเครือข่าย Windows ของเราชื่อผู้ใช้ของเราอยู่ในรูปแบบ:

[domain]\[username]

ตัวอย่างเช่น:

http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080

สิ่งนี้ถูกเพิ่มลงในไฟล์ใหม่ต่อไปนี้ (ไม่มีอยู่ตามค่าเริ่มต้น):

gksudo gedit /etc/apt/apt.conf.d/01proxy

ข้อความต่อไปนี้ถูกเพิ่ม:

Acquire::http::Proxy "http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080";

หากคุณใช้พร็อกซีที่ไม่ระบุชื่อคุณไม่จำเป็นต้องใช้ข้อมูลรับรองการเข้าสู่ระบบของคุณ:

Acquire::http::Proxy "http://askubuntu-proxy.com:8080";

บันทึกไฟล์แล้วตรวจสอบว่าทุกอย่างใช้ได้กับ:

sudo apt-get update

สำหรับผู้ที่จะอ่านสิ่งนี้ในภายหลัง: มันดูเหมือนแฮ็คไปยังตาที่ไม่ได้รับการฝึกฝน แต่มันเป็นวิธีที่ง่ายอย่างเหลือเชื่อที่จะทำให้พร็อกซีของ บริษัท เชื่อฟัง
macduff

1
มันทำงานได้อย่างสมบูรณ์แบบ เว้นแต่คุณได้ตั้งค่า /etc/apt/apt.conf ก่อนหน้านี้ด้วยบรรทัด Acquire ที่ไม่ดี ฉันทำอย่างนั้นและสิ่งที่ฉันต้องทำก็แค่ย้อนกลับไปและลบบรรทัดนั้น
ข้าม Huffman

บน Ubuntu 12.10 ฉันต้องคัดลอกการเปลี่ยนแปลงที่ทำกับ /etc/apt/apt.conf.d/01proxy ไปที่ /etc/apt/apt.conf ก่อนที่มันจะใช้ได้
Stephen Niedzielski

แม้จะมีการแก้ไขเหล่านี้ฉันก็ไม่สามารถทำงานให้ฉันด้วย 12.04 ... แต่ฉันจัดการเพื่อให้มันทำงานโดยใช้และกำหนดค่า ntlmaps และชี้ไฟล์ apt.conf ไปยังพร็อกซีกลางที่นั่น
monkut

The program 'gksudo' is currently not installed. You can install it by typing: sudo apt-get install gksu(ซึ่งแน่นอนว่าจะไม่ทำงานหากไม่มีการตั้งค่าพร็อกซี ... ) โชคดีที่ใช้sudoงานได้ดี
TED

13

ฉันพบว่า USERNAME และ PASSWORD ที่ป้อนลงในแอปเพล็ต "Network Proxy" ไม่ได้รับการจัดเก็บไว้ในไฟล์ apt.conf คุณต้องเพิ่มชื่อผู้ใช้และรหัสผ่านด้วยตนเองในไฟล์ /etc/apt/apt.conf

แอปเพล็ต "Network Proxy" เก็บเฉพาะชื่อโฮสต์และพอร์ต

ไวยากรณ์พื้นฐานคือ

Acquire::http::proxy "http://User:Password@host:port/";

Acquire::ftp::proxy "ftp://User:Password@host:port/";

Acquire::https::proxy "https://User:Password@host:port/";

หากคุณใช้ชื่อผู้ใช้และรหัสผ่าน Windows ให้ปฏิบัติตามคำแนะนำนี้:

User = Domain/Username

(ผู้ใช้ windows /ไม่ได้ใช้\)

หากคุณใช้รหัสผ่านที่รัดกุม / ซับซ้อนของ Windows ด้วยอักขระพิเศษคุณต้องใช้การเข้ารหัส URL สำหรับค่าตัวอย่างเช่น "@" ในรหัสผ่านจะเป็น "% 40"


(ผู้ใช้ windows ใช้ / ไม่) ดังนั้นนั่นเป็นเหตุผลที่ฉันติดอยู่ :) ขอบคุณ!
GaiusSensei

9

ลองตั้งค่าhttp_proxyเป็นhttp: // user: pass @ proxyserver: port /

แก้ไข:
หากการตั้งค่าใช้งานไม่ได้ลองแก้ไขhttp_proxy apt.confใน
Ubuntu apt.confมีการแยกส่วนใน/etc/apt/apt.conf.d/ไดเรกทอรี
ในไดเรกทอรีนี้แก้ไข/etc/apt/apt.conf.d/01ubuntu:

APT {
    Acquire {
        http {
            Proxy "http://user:password@server:port";
        };
    };
};

หรือลองตั้งค่าโดยใช้ Synaptic: การตั้งค่า -> การตั้งค่า -> เครือข่าย
แล้วตั้งค่าพร็อกซีของคุณใน "การกำหนดค่าพร็อกซีด้วยตนเอง"


3
คุณหมายถึงไฟล์ / etc / environment หรือไม่
tommyk

ใช่มันจะตั้งค่าตัวแปรนี้ทั่วโลก
Coder ไม่เป็นทางการ

หนึ่งจะเข้ารหัสลำไส้ใหญ่เป็นส่วนหนึ่งของรหัสผ่านได้อย่างไร
k0pernikus

/ etc / environment ไม่ทำงานกับ apt-get (หรืออย่างน้อยก็ต้องมีการรีสตาร์ท;) การเปลี่ยน apt.conf มีผลทันที
Danubian Sailor

ฉันสามารถยืนยันการตั้งค่า "การกำหนดค่าพร็อกซีด้วยตนเอง" และ "ใช้ทั้งระบบ" ในเครือข่ายใช้งานได้กับ apt-get
จะ Sheppard

4

ฉันอยู่หลังพรอกซี MS ISA และฉันใช้ Cntlm Authentication Proxy; ในapt.confฉันมี 4 บรรทัด; ฉันอ่านที่ไหนสักแห่งว่าบรรทัดสุดท้ายต้องว่างเปล่า แต่ฉันไม่แน่ใจ มันทำงานได้อย่างสมบูรณ์แบบ:

Acquire::http::proxy "http://127.0.0.1:3128/";
Acquire::ftp::proxy "ftp://127.0.0.1:3128/";
Acquire::https::proxy "https://127.0.0.1:3128/";

3

cntlm มีตัวเลือกการค้นพบที่ช่วยค้นหาการกำหนดค่าที่เหมาะสมเพื่อทำงานกับ NTLM auth ของเครือข่ายของคุณลองสิ่งนี้:

cntlm -I -M http://test.com

คัดลอกและวางผลลัพธ์ใน /etc/cntlm.conf

รีสตาร์ท cntlm


'cntlm' is currently not installed. You can install it by typing: sudo apt-get install cntlm(ซึ่งถ้าหลักสูตรไม่ทำงานหากพร็อกซีของฉันไม่ได้ตั้งค่าไว้ ... )
TED

2
  1. เปิดเทอร์มินัลและเพิ่มบรรทัดต่อไปนี้ลงใน /etc/apt/apt.conf

    gksu gedit /etc/apt/apt.conf
    
  2. เพิ่ม 2 บรรทัดเหล่านี้:

    Acquire::http::Proxy "http://user:pass@proxy-host:port/";
    Acquire::ftp::Proxy "http://user:pass@proxy-host:port/";
    
  3. บันทึกและออก.

    ตอนนี้ apt-get updateและควรทำงานหลังพร็อกซีแต่คุณจะสังเกตเห็นว่ายังมีบางสิ่งที่ไม่ทำงานนั่นคือadd-apt-repositoryคำสั่ง

    หากต้องการเพิ่มที่เก็บหลังพร็อกซีให้พิมพ์คำสั่งต่อไปนี้:

    # export https_proxy="http://192.168.1.5:8080"
    # sed -i 's/"keyserver.ubuntu.com"/"hkp://keyserver.ubuntu.com:80"/' /usr/share`/pyshared/softwareproperties/ppa.py`
    

    ตอนนี้คุณสามารถเพิ่มที่เก็บใน Lucid และ Natty โดยใช้ LANG = C add-apt-repository

    ตัวอย่าง:

    root @ ubuntu: ~ # LANG = C p-add-apt-repository ppa: motumedia / mplayer-daily

Via Unixmen


2

จะใช้การปรับปรุงหรือติดตั้ง apt-get ใน Ubuntu ได้อย่างไร? ฉันอยู่หลังพร็อกซีเซิร์ฟเวอร์และหลังจากติดตั้ง Ubuntu ฉันไม่สามารถอัปเดตหรือติดตั้งอะไรก็ได้โดยใช้คำสั่ง apt-get หลังจากค้นหาฉันพบว่าแพ็คเกจ apt ถูกเปลี่ยนไปตอนนี้ไม่มี apt.conf บนไดเร็กทอรี / etc / apt อีกต่อไป

สิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้คือ:

เปิด terminal และไฟล์

sudo -H gedit /etc/bash.bashrc

และเพิ่มที่ด้านล่างของไฟล์ทั้งสองบรรทัดนี้:

#proxy 
export http_proxy=http://user:password@host:port/
export ftp_proxy=http://user:pass@host:port/

ตอนนี้บันทึกและออกตอนนี้คุณจะสามารถอัปเดตอัพเกรดหรือติดตั้งแพ็คเกจใน Ubuntu


ฉันได้เพิ่มการส่งออกตามที่คุณแนะนำ มันยังไม่ทำงาน ตอนนี้ฉันได้รับข้อความแสดงข้อผิดพลาด "ไม่สามารถเชื่อมต่อกับ extras.ubuntu.com:80 (91.189.88.33) - เชื่อมต่อ (110: หมดเวลาการเชื่อมต่อ)" <br> สิ่งที่แปลกคือเมื่อฉันป้อนการตั้งค่าพร็อกซีเดียวกันในการตั้งค่า Firefox ฉันสามารถท่องเว็บได้
tommyk

@tommyk คุณสามารถโพสต์ /etc/apt/sources.list ของคุณและปรับปรุงคำถามของคุณที่นี่หรือพยายามที่จะลบ extras.ubuntu.com จาก /etc/apt/sources.list ของคุณและดำเนินการ apt-get ปรับปรุง
hhlp

ฉันได้แทนที่ซอร์สรายการของฉันด้วยค่าเริ่มต้นจากหน้าอูบุนตู ฉันยังคงมีข้อผิดพลาดเดียวกันสำหรับที่เก็บข้อมูลทั้งหมดที่ระบุไว้ในไฟล์นี้
tommyk

2

อันนี้ใช้ได้สำหรับฉัน !!

(การเพิ่มพร็อกซีด้วยตนเองจาก GUI ผ่านทาง system-settings-> เครือข่าย ฯลฯ ควรใช้งานได้) แต่หากไม่ได้และคุณส่งออกตัวแปร env จากเทอร์มินัล:

export http_proxy=http://<your proxy url>:<proxy port>

และอีกครั้งสำหรับ https:

export https_proxy= <usually the same as the http>

สิ่งสำคัญที่สุดในการเพิ่ม -E: เมื่อต้องการเรียกใช้sudo apt-get installหรือsudo apt-get updateคุณต้องเรียกใช้:

sudo -E <command>

"-E" ใช้ตัวแปรสภาพแวดล้อมผู้ใช้ของคุณสำหรับรูท (sudo) สำหรับเรื่องนั้น http_proxy / https_proxy ที่คุณเพิ่งส่งออก

หวังว่าจะช่วย :)


1

ด้วยพร็อกซี BlueCoat สำหรับฉันรูปแบบของapt.confไฟล์นั้นจำเป็นต้องมีลักษณะดังนี้:

Acquire::http::proxy "http://Domain%5cUserID:Password@proxy.name.whatever:80/";
Acquire::ftp::proxy "ftp://Domain%5cUserID:Password@proxy.name.whatever:80/";
Acquire::https::proxy "https://Domain%5cUserID:Password@proxy.name.whatever:80/";

^ ^ ^ ^ บรรทัดว่างหลังจากบรรทัดที่ 3 ของพร็อกซีอย่าป้อนบรรทัดนี้ ^ ^ ^ ^


1

มีปัญหาเดียวกันนี้หลังจากติดตั้ง Ubuntu 18.04 สิ่งที่ใช้ได้ผลสำหรับฉันคือ:

  1. เปิดหน้าจอพร็อกซีเครือข่ายในการตั้งค่าเครือข่าย
  2. เลือกด้วยตนเองและเพิ่มทั้ง http และข้อมูลพร็อกซี https
  3. ตั้งค่าฟิลด์ Ignore Hosts ด้วย:
    https://extensions.gnome.org*, *.extensions.gnome.org*
  4. รีสตาร์ท Ubuntu

สำหรับจุดที่ 3 ไม่แน่ใจว่าการเพิ่มรายการข้างต้นใช้งานได้หรือไม่ แต่ขั้นตอนนี้ใช้ได้สำหรับฉัน


0
  1. เริ่ม Synaptic (ไปที่ระบบ -> การดูแลระบบ -> Synapticใน Gnome 2 หรือพิมพ์"synaptic"ใน Dash in Unity)
  2. บนแถบเมนูคลิกการตั้งค่าตามด้วยการตั้งค่า
  3. เมื่อหน้าต่างกำหนดลักษณะปรากฏขึ้นให้คลิกที่แท็บเครือข่าย
  4. เลือกปุ่มตัวเลือกการกำหนดค่าพร็อกซีด้วยตนเองและป้อนข้อมูลพร็อกซีของคุณ
  5. หากต้องการใช้ข้อมูลการตรวจสอบสิทธิ์ให้คลิกปุ่มการรับรองความถูกต้องแล้วป้อนชื่อผู้ใช้และรหัสผ่าน
  6. คลิกตกลงเพื่อปิดหน้าต่างการตรวจสอบสิทธิ์ HTTP
  7. คลิกตกลงเพื่อปิดหน้าต่างการตั้งค่า
  8. คลิกปุ่มโหลดซ้ำเพื่ออัปเดตรายการแพ็คเกจ

โปรดทราบว่าการเปลี่ยนแปลงการตั้งค่านี้จะมีผลกับUpdate Managerด้วย


0

วิธีแก้ปัญหาแบบใช้ครั้งเดียวนี้ทำงานได้สำหรับฉัน:

sudo env http_proxy=http://<ip>:<port> apt-get update
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.