4 votes

Le proxy est configuré (correctement, je suppose). L'Appstore et Safari fonctionnent bien. Mais le trafic réseau sur le terminal ne fonctionne pas

Définissez HTTP, HTTPS, FTP, SOCKS, Streaming, Gopher sur 10.11.0.1 et le port 8080, sans nom d'utilisateur ni mot de passe. Et cela fonctionne pour Safari et App Store. J'ai défini les mêmes entrées pour Firefox et cela fonctionne également sans problème.

Comment puis-je configurer le proxy pour des réseaux particuliers afin qu'il fonctionne correctement sur toutes les applications ?

6voto

jaume Points 13186

Comment puis-je configurer le proxy pour des réseaux particuliers afin qu'il fonctionne correctement sur toutes les applications ?

Vous avez configuré plusieurs proxies dans les préférences système, et c'est la bonne façon de procéder (c'est pourquoi l'application App Store et Safari fonctionnent bien). Malheureusement, le terminal est une exception et nécessite ses propres paramètres de proxy.

Pourquoi ça ? Le terminal est simplement un conteneur qui exécute un coquille . Un shell est un programme qui, en termes simples, affiche une invite et attend patiemment que vous exécutiez des commandes telles que ls y rm .

Les shells sont antérieurs à MacOS et ont leurs propres règles pour configurer les proxies. . Les shells ne connaissent pas les paramètres de proxy dans les Préférences Système, et ils doivent être configurés séparément.

Le shell par défaut de MacOS est Bash (vous pouvez savoir quel shell vous exécutez en exécutant echo $0 à l'invite), je vais donc vous expliquer comment définir le proxy en Bash.

La solution simple

  1. Lancez le Terminal et tapez cette commande pour changer de répertoire vers notre répertoire personnel :

    cd ~
  2. Tapez ces commandes pour ouvrir .bash_profile avec TextEdit :

    touch .bash_profile
    open -a TextEdit .bash_profile
  3. Définir le proxy variables d'environnement en tapant le texte suivant dans TextEdit et en remplaçant <your http proxy> , <your https proxy> y <your ftp proxy> avec votre serveur proxy (si TextEdit contient déjà du texte, ajoutez le texte ci-dessous à la fin du fichier) :

    export HTTP_PROXY="<your http proxy>"
    export http_proxy=$HTTP_PROXY
    export HTTPS_PROXY="<your https proxy>"
    export http_proxy=$HTTP_PROXY
    export FTP_PROXY="<your ftp proxy>"
    export ftp_proxy=$FTP_PROXY

    Si vous avez configuré dans les Préférences Système une liste d'hôtes et de domaines qui doivent être contactés directement en contournant le proxy, ajoutez-les comme suit :

    export NO_PROXY="<comma-separated list of hosts>"
    export no_proxy=$NO_PROXY

    Par exemple :

    export HTTP_PROXY="http://10.11.0.1:8080"
    export http_proxy=$HTTP_PROXY
    export HTTPS_PROXY="http://10.11.0.1:8080"
    export http_proxy=$HTTP_PROXY
    export FTP_PROXY="http://10.11.0.1:8080"
    export ftp_proxy=$FTP_PROXY
    export NO_PROXY="localhost,127.0.0.1"
    export no_proxy=$NO_PROXY
  4. Enregistrez le fichier avec S et fermez TextEdit.

  5. Fermez le terminal et rouvrez-le. Maintenant, les paramètres du proxy devraient fonctionner correctement.

Une solution plus élaborée

La méthode ci-dessus présente un inconvénient : vous devez conserver deux configurations, celle qui se trouve dans les Préférences Système et celle qui se trouve dans les .bash_profile .

Heureusement, comme expliqué sur Le blog de Derek Morgan , vous pouvez demander à Bash d'importer les paramètres du proxy des Préférences Système à l'aide de la fonction scutil commande . Suivez simplement les étapes détaillées dans la section précédente, mais à l'étape 3, définissez les variables d'environnement du proxy http/https/ftp comme suit :

export HTTP_PROXY=$(scutil --proxy | awk '\
/HTTPEnable/ { enabled = $3; } \
/HTTPProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export http_proxy=$HTTP_PROXY

export HTTPS_PROXY=$(scutil --proxy | awk '\
/HTTPSEnable/ { enabled = $3; } \
/HTTPSProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export https_proxy=$HTTP_PROXY

export FTP_PROXY=$(scutil --proxy | awk '\
/FTPEnable/ { enabled = $3; } \
/FTPProxy/ { server = $3; } \
/FTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export ftp_proxy=$FTP_PROXY

Dans les définitions ci-dessus, j'ai mis http:// comme schéma pour tous les serveurs proxy, vous pouvez être amené à les modifier pour socks5:// pour SOCKS ou https:// pour HTTPS si nécessaire.

4voto

Douglas Points 10417

Je pars du principe que vous voulez parler d'applications/protocoles tels que ssh ne peut pas se connecter à cause du proxy.

Pour vous connecter, vous devez passer par le proxy HTTP.

ssh USERNAME@REMOTEHOST -o "ProxyCommand=nc -X connect -x PROXY:PORT %h %p"

Remplacez USERNAME, REMOTEHOST, PROXY et PORT par leurs valeurs respectives.

Si c'est quelque chose que vous devez faire plus d'une fois, ajouter une entrée statique à votre ~/.ssh/config est utile. Par exemple :

Host remotehost.foo.bar
    ProxyCommand          nc -X connect -x proxyhost:proxyport %h %p
    ServerAliveInterval   10

Le site ServerAliveInternal est là parce que la plupart des proxys interrompent la connexion s'il n'y a pas d'activité pendant un certain temps.

Ensuite, pour vous connecter, tout ce que vous avez à faire est de :

ssh remotehost.foo.bar

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X