407 za firemnou VPN proxy: npm, Maven a VS Code
407 znamená, že proxy chce prihlasovacie údaje, nie že je register mimo prevádzky. Nastavte npm, Maven, VS Code a kontajnery a vylúčte interné hosty.
To, že sa intranetová stránka otvorí v prehliadači, dokazuje len to, že proxy funguje pre prehliadač, nie pre npm alebo Maven. Každý klient číta vlastnú konfiguráciu a sieť dostupná iba cez VPN pridáva druhú otázku: či sa klient vôbec dostane k proxy. Začnite stavovým kódom a potom sledujte konfiguračný reťazec nástroja, ktorý zlyhal. Preto jeden klient funguje a susedný nie.
Čo 407 skutočne dokazuje
407 Proxy Authentication Required prichádza od proxy, nie z registra či úložiska. Klient sa dostal k proxy a proxy odmietla požiadavku, zvyčajne preto, že prihlasovacie údaje chýbali, boli zle naformátované alebo neboli prijaté pre daný cieľ.
Časový limit hovorí niečo iné: nesprávna adresa proxy, žiadna trasa k proxy pred postavením tunela alebo chýbajúci záznam obchádzania pre interný host. Prečítajte text chyby, než zmeníte prihlasovacie údaje.
Overte host, port, schému overovania a to, či používateľské meno potrebuje prefix domény. Potom zistite, či nástroj číta hodnotu zo súboru, z premennej prostredia alebo z oboch. Meno s doménou je častá príčina 407, rovnako ako heslo uložené s nesprávnym kódovaním.
npm číta vlastný konfiguračný reťazec
npm prijíma kľúče proxy a https-proxy v .npmrc používateľa alebo projektu. Uveďte schému, pretože hodnoty sú URL, a zakódujte rezervované znaky v hesle, aby znak at nerozdelil hodnotu.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Pomocou npm config list vidíte, ktorý súbor dodal každú efektívnu hodnotu. Export shellu ako npm_config_proxy môže súbor prepísať a projektový .npmrc s osobným heslom by sa nikdy nemal commitovať. Vypíšte cestu k zdroju spolu s hodnotou.
Nechajte strict-ssl zapnuté. Proxy, ktorá kontroluje TLS, môže vyžadovať firemné CA v úložišti dôvery; vypnutie overovania kvôli obídeniu chyby skryje skutočný problém dôvery.
Maven oddeľuje proxy od zrkadiel
Maven číta proxy a zrkadlá zo súboru nastavení používateľa, nie z pom projektu. Sieťové proxy a zrkadlá interného úložiska dajte do ~/.m2/settings.xml a verejné deklarácie úložísk nechajte v projekte.
Blok proxy potrebuje id, príznak aktivity, protokol, host a port a záznam nonProxyHosts pre interné úložisko. Tieto polia držte v používateľskom súbore, nie v pom, aby zmena siete neprepisovala build celého tímu.
Pridajte interné úložisko do nonProxyHosts, aby sa Maven pripojil priamo. Bez toho je proxy zbytočná zastávka a zlyhanie vyzerá ako výpadok úložiska. Záznam zrkadla ukazuje na interné úložisko a nenahrádza nastavenie proxy.
Vývojári, ktorí prechádzajú medzi sieťami, môžu mať jeden súbor nastavení na sieť a pri štarte shellu vybrať správnu kópiu. Ručná úprava jedného súboru pri každom prechode mení funkčný notebook na tiket podpory.
VS Code a dev kontajnery majú rôzne menné priestory
VS Code číta http.proxy z používateľských alebo pracovných nastavení vrátane schémy a portu. Pokrýva to požiadavky editora na rozšírenia a marketplace, ale nenastaví terminál ani kontajner spustený z editora. Skontrolujte rozsah nastavenia aj hodnotu. Nastavenie pracovného priestoru môže prepísať používateľské pre jeden projekt.
Dev kontajner má vlastný sieťový menný priestor. Nededia proxy premenné hostiteľa ani jeho VPN trasu, preto volanie marketplace v kontajneri môže zlyhať, zatiaľ čo to isté volanie na hostiteľovi funguje.
Dajte kontajneru tie premenné, alebo mu dajte vlastný resolver a trasu. Keď sa mená vnútri prekladajú, ale proxy nikdy neodpovedá, chýba zvyčajne trasa, nie adresa.
Zoznamy obchádzania a priorita prostredia
Pridajte VPN bránu, interné registre a privátne DNS prípony do zoznamu obchádzania. Ak sa klient pokúsi dostať k bráne cez proxy pred vznikom tunela, spojenie zlyhá tak, že to vyzerá ako výpadok proxy. Otestujte to s vypnutým tunelom.
Premenné prostredia a súbory sa môžu rozchádzať. Spustite vlastný výpis nastavení nástroja, nie shellu, a porovnajte hodnoty. Duplicitná premenná malými písmenami, zastaraná hodnota v nadradenom shelli alebo súbor projektu môžu prevážiť nad práve upraveným nastavením.
V CI odovzdajte proxy ako tajnú premennú a otestujte inštaláciu jedného balíka v tom istom image. 407 v kontajneri často znamená, že premenná tam jednoducho chýba, zatiaľ čo shell hostiteľa ju má.
Zapíšte host a port proxy, prípony obchádzania a súbor alebo premennú, ktorá ich dodáva, pre každý nástroj. Keď jeden klient vráti 407 a iný funguje, tento záznam mení porovnanie štyroch konfigurácií na krátku kontrolu.