Paramètres de proxy à l'échelle du système dans Ubuntu

22

Je voulais utiliser Internet sur mon serveur proxy de collège qui nécessite également une authentification. J'ai recherché des solutions sur google et la meilleure solution que j'ai trouvée était celle-ci . J'ai modifié le script dans la réponse acceptée pour inclure l'authentification. Ça y est:

if [ $(id -u) -ne 0 ]; then
echo "This script must be run as root";
exit 1;
fi

if [ $# -eq 4 ] then

gsettings set org.gnome.system.proxy mode 'manual' ;
gsettings set org.gnome.system.proxy.http host '$1';
gsettings set org.gnome.system.proxy.http port $2;
gsettings set org.gnome.system.proxy.http authentication-user '$3';
gsettings set org.gnome.system.proxy.http authentication-password '$4';


grep PATH /etc/environment > lol.t;
printf \
"http_proxy=http://$3:$4@$1:$2/\n\
 https_proxy=http://$3:$4@$1:$2/\n\
 ftp_proxy=http://$3:$4@$1:$2/\n\
 no_proxy=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n\
 HTTP_PROXY=http://$3:$4@$1:$2/\n\
 HTTPS_PROXY=http://$3:$4@$1:$2/\n\
 FTP_PROXY=http://$3:$4@$1:$2/\n\
 NO_PROXY=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n" >> lol.t;

 cat lol.t > /etc/environment;


 printf \
 "Acquire::http::proxy \"http://$3:$4@$1:$2/\";\n\
  Acquire::ftp::proxy \"ftp://$3:$4@$1:$2/\";\n\
  Acquire::https::proxy \"https://$3:$4@$1:$2/\";\n" > /etc/apt/apt.conf.d/95proxies;

rm -rf lol.t;

else

printf "Usage $0 <proxy_ip> <proxy_port> <username> <password>\n";

fi

Cependant, les comptes en ligne ne fonctionnent toujours pas (idem pour rhythmbox et autres programmes GTK3) . Un écran blanc apparaît comme ceci:

entrez la description de l'image ici

Des suggestions sur la façon de le résoudre?

Raman
la source
Copie
David Foerster

Réponses:

31

Résolu finalement:

(Suivez les étapes en série)

1. Pour les programmes gtk3 tels que rhythmbox et les comptes en ligne:

Vous devez d'abord entrer les paramètres de proxy dans les paramètres réseau (avec l'authentification):

entrez la description de l'image ici

Appliquer ensuite à l'échelle du système.

2. Pour apt, centre de logiciels, etc.

éditer le fichier /etc/apt/apt.conf

Et puis remplacez tout le texte existant par les lignes suivantes

Acquire::http::proxy "http://username:password@host:port/";
Acquire::ftp::proxy "ftp://username:password@host:port/";
Acquire::https::proxy "https://username:password@host:port/";

3. Variables d'environnement

éditer le fichier /etc/environment

Et puis ajoutez les lignes suivantes après PATH = "quelque chose ici"

http_proxy=http://username:password@host:port/
ftp_proxy=ftp://username:password@host:port/
https_proxy=https://username:password@host:port/

C'est tout..

Raman
la source
1
L'étape 1) modifie-t-elle / etc / environment? Je voudrais un moyen de faire cette étape via la ligne de commande.
Lucas
Il semble que l'étape 1) fonctionne apt-get updateégalement. Donc, pas besoin de l'étape 2).
smwikipedia
@Raman Est-il nécessaire d'échapper aux caractères spéciaux du mot de passe en faisant cela? Si oui, comment?
code_dragon
2

Pour télécharger des packages par wget proxy, vous devez configurer dans / etc / environment, et pour télécharger des packages par apt-get, vous devez configurer dans /etc/apt/apt.conf

sauser
la source
2
Veuillez élaborer votre réponse, elle ne fournit actuellement pas beaucoup d'informations utiles.
Byte Commander
1
Bienvenue sur Ask Ubuntu! Je recommande de modifier cette réponse pour la développer avec des détails spécifiques sur la façon de procéder. (Voir aussi Comment écrire une bonne réponse? Pour des conseils généraux sur les types de réponses considérées comme les plus utiles sur Ask Ubuntu.)
David Foerster
1

Pour faire wgetfonctionner avec un proxy, j'ajouterais également de créer un .wgetrcdans votre répertoire personnel, contenant:

http_proxy = http://proxy:port/
https_proxy = http://proxy:port/
proxy_user = user
proxy_password = password
use_proxy = on
wait = 15
trudide12
la source
1

Ce n'est pas tout, bien sûr. Quelques autres programmes ( npm, curlet git):

npm config set proxy $HTTP_PROXY
npm config set https-proxy $HTTPS_PROXY
npm config set strict-ssl false
echo "proxy = $HTTP_PROXY" > ~/.curlrc
echo "noproxy = $NO_PROXY" >> ~/.curlrc
git config --global http.proxy $HTTP_PROXY
git config --global https.proxy $HTTPS_PROXY

Pour Maven, modifiez ~/.m2/settings.xml. IntelliJ ne semble pas non plus reprendre la configuration globale.

MPi
la source