명령 줄에서 프록시를 통해 "sudo apt-get update"를 실행하는 방법은 무엇입니까?


답변:


91

일부 릴리스에서는 sudo가 명령을 실행할 때 모든 환경 변수가 모두 지워지도록 구성됩니다. http_proxy 의 값을 유지하고 이를 수정하려면 / etc / sudoers를 편집하고 다음을 실행해야합니다.

visudo

그런 다음 줄을 찾으십시오.

Defaults env_reset 

그리고 그 뒤에 추가하십시오 :

Defaults env_keep = "http_proxy ftp_proxy" 

상황이 예상대로 작동하기 시작합니다.

이에 대한 해결책 을 찾은 Ubuntu 포럼의 kdogksu 에게 감사합니다 .

apt-get뿐만 아니라 그래픽 X11 utils (예 : 시냅틱, mintintall, ...)를 수정하려면 다음 줄 /etc/sudoers이 작업을 수행해야합니다.

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"

7
"https_proxy"도 추가해야합니까?
TenLeftFingers

2
$ export http_proxy = " user : password @ proxy-server : port "및 비밀번호에 특수 문자가 포함 된 경우 -cyberciti.biz/faq/…
Alex Punnen 2016 년

2
'env_reset'뒤에 'env_keep'을 추가하거나 그 자리에 배치해야합니까? 그들은 서로 반대되는 것처럼 보이므로 둘 다 지키는 것이 의미가 있습니까?
로드리고

기본값 env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"가 저에게 효과적이었습니다! 감사 ! -
로널드

1
많은 탐색 후이 문제가 발생했습니다. 이것은 내 문제를 해결했습니다.
Sudipta Basak

39

이것을 사용하십시오.

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

이것이 내가 사용하는 것입니다. 완벽하게 작동합니다.

Apt를 사용하면 파일 아래에 개별 설정을 배치 /etc/apt/apt.conf.d/할 수 있으므로 위와 동일한 효과가 있지만 .conf파일에 다른 줄이 있으면 유지 관리가 더 쉬울 수 있습니다 .

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

5
이 줄을 구성 파일에 추가하는 방법을 설명하기 위해 이것을 편집하는 것이 좋습니다. 명령 행에서 해당 행을 실행하려고 시도해도 작동하지 않습니다. 현재이 답변은 올바른 아이디어를 기반으로하지만 초보자에게는 도움이되지 않습니다. 그것은 당신이 그 선이 말을하고 있는지조차 완전히 명확하지 않다 추가되어야apt.conf.
Eliah Kagan

대박 !!!! 매력처럼 작동
Shantanu Bedajna

내 시스템에서 나는 /etc/apt/apt.conf.d 아래에 파일을 만들어야했지만 작은 세부 사항은 훌륭했다
dldnh

1
@ dldnh : 파일을 만들 /etc/apt/apt.conf거나 구성 파일을 사용할 수 있습니다 /etc/apt/apt.conf.d.... 둘 다 작동합니다! :-)
Paul Calabro

세미콜론을 잊지 마세요E: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane

18

나를 위해 일한 것은 다음과 같습니다.

sudo http_proxy=http://yourserver apt-get update

단순히 http_proxy를 내 보낸 다음 sudo echo $ http_proxy를 실행하여 내 보낸 값을 출력하기 때문에 약간 이상합니다.


1
$http_proxysudo가 실행되기 전에 확장됩니다.
제레미 목록

1
이것은 Dockerfile에서 훌륭하게 작동했습니다!
Cory Ringdahl

필요한 경우 프록시 포트를 잊지 마십시오 :)
Gilad Peleg

11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

내보내기는 필요하지 않으며 sudo프록시가 익명 인 경우 해당 proxyusername:proxypassword@부분을 버립니다 .


:-(, "웹 프록시 서비스에 대한 액세스가 거부되었습니다!"오류가 발생합니다
Renjith G

같은 프록시 설정이 간단한 것으로 작동 wget합니까?
Oli

예 .. 같은 오류가 반복됩니다 ...
Renjith G

2
Acquire :: http :: Proxy " MYDOMAIN \ MYNAME : MYPASS@MY.PROXY.COM : MYPORT"로 /etc/apt/apt.conf를 편집하는 것은 어떻습니까?
Renjith G

~ / .bashrc에 추가 할 수도 있습니다. 끔찍한 보안 위험.
Scaine

3

그것은 경우 일시적인 구성은 , 당신이 시도 할 수 : sudo는 bash는 -c 'HTTP_PROXY = "HTTP를 : // <proxy_host> <PROXY_PORT> /"업데이 트를 apt-get을'

"root"계정에 대해 환경 변수를 정의해야하므로이 옵션이 필요합니다. 이전에 수행 및 내보내기가 작동하지 않아야합니다.

영구적 인 구성을 위해서는 시스템 파일을 수정해야합니다. 이것은 네트워크 프록시가 실제로 적용되는지 확인하는 방법 에 대한 다음 답변에 이미 설명되어 있습니다 . .


:-(, "웹 프록시 서비스에 대한 액세스가 거부되었습니다!"오류가 발생합니다
Renjith G

아마도 로그인과 비밀번호를 입력해야합니까? 그렇다면 http_proxy는 "http : // <user> : <pass> @ <host> : <port> /"형식이어야합니다.
Huygens

3

우분투는 프록시 인증에 엄청나게 적대적입니다. 나는 직장에서 우분투 랩톱을 사용하고 있으며 파손 횟수는 놀랍습니다.

시냅틱, Apt, Firefox, Chromium 등은 모두 프록시를 지정하기 위해 서로 다른 방법을 사용하므로 자격 증명을 안전하게 지정할 수있는 곳이 없습니다.

주제에 대한 몇 가지 버그 : https://bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070

https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138

https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827

https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630

수출을 사용하겠다는 Oli의 제안은 그것을 막는 유일한 모호한 방법입니다. 프록시 서버가 보조 인증을 사용하여 주 인증 서버 (예 : Active Directory)의로드를 최소화하는 경우 프록시 지원을 "퍼지"할 수도 있습니다. 여기서 프록시에 의해 AD에 대해 첫 번째 프록시 연결이 인증 된 다음 설정된 기간 (일반적으로 5 분) 동안 다른 모든 연결은 해당 사용자로 "신뢰"됩니다. 따라서 파이어 폭스를 열고 인터넷을 탐색하고 (어디서나 할 수 있음) 프록시를 지정하여 유틸리티 (wget, synaptic 등)를 시도 할 수 있지만 사용자 이름은 비워 둘 수 있습니다.

우분투는 일반적으로 암호를 쉽게 읽을 수 있기 때문에 모든 기업 환경에 적대적입니다. Seahorse는 주요 범인이지만 Network Manager도 충격적입니다. PEAP 인증 네트워크에 연결하면 누구든지 랩톱을 빌릴 수있는 사람을 볼 수 있도록 애플릿에 암호를 저장했습니다. 해마 개발자들이 불안에 대한 주장을 거부했기 때문에 분명히 리눅스 공유에서 노트북 공유는 희생으로 간주됩니다. 그 후 네트워크 관리자 개발자에게 연락 할 마음이 없었습니다.


나는 이것을 위해 치료법으로 cntlm을 권장합니다. AD 인증을 처리하며 자격 증명없이 127.0.0.1을 사용하도록 모든 프록시 설정을 설정합니다.
laz

다른 머신으로 인증해야하는 경우 비밀번호 평문을 저장해야합니다. 암호를 사용하려면 암호화 키를 동일한 장치에 저장해야하므로 "암호화"는 보안을 추가하지 않습니다.
제레미 목록

제레미, 당신은 해마 개발자들과 같은 보안 접근 방법을 사용하고 있습니다. 나는이 물건을 불가능하게 만들려고하지 않고 단지 어렵게 만듭니다. 잠금 해제 된 Ubuntu 랩톱에서 자격 증명을 훔치는 것은 사소한 일입니다. 5 번의 클릭으로 얻을 수 있습니다. Windows의 경우도 마찬가지입니다. 여전히 가능할 수도 있지만 어떻게 해야할지 모르겠습니다. 10 분 안에 Windows 시스템에서 암호를 들어 올리는 간단한 방법이 없으므로 실수로 워크 스테이션 잠금을 해제 할 수 있습니다. 우분투에서도 똑같이하면 사직서를 제출할 수도 있습니다. 충분하지 않습니다.
Scaine

3

편집 했습니까 /etc/apt/apt.conf? 나는 이것을 회사 프록시 뒤에 적절하게 사용합니다.

Acquire::http::proxy "http://user:password@host:port/";

쉘 환경에 $ http_proxy가 정의되어 있지 않으면 apt가이 값을 사용한다고 생각합니다 (예 : $ http_proxy가 우선).


apt.conf가 여전히 사용 중인지 잘 모르겠습니다. 8.04에서 10.04로 업데이트했을 때 해당 파일에서 프록시 설정을 제거 할 때까지 불가능한 업데이트가 발생했습니다. 다시 작업 ...
Little Jawa

이상합니다-10.04와 함께 apt.conf를 사용합니다. 이 파일의 설정이 Synaptic 패키지 관리자 환경 설정 GUI에서 구성된 설정과 분리되어 있습니다.
Jon Brett

1
예, apt.conf여전히 사용해야합니다. a를 사용하여 적절하다고 생각하는 구성 설정을 확인할 수 있습니다 apt-config dump.
Steve Beattie

0

명령 줄에서 프록시를 통해 "sudo apt-get update"를 실행하려면 아래 명령을 사용하십시오.

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.