پوسته به پراکسی سیستم اهمیت نمیدهد
پراکسی سیستم فقط روی برنامههایی اثر دارد که تنظیمات سیستم را میخوانند. بیشتر ابزارهای خط فرمان این کار را نمیکنند؛ آنها به متغیرهای http_proxy و https_proxy یا فایل پیکربندی خودشان نگاه میکنند. پس اینکه git clone به مهلت زمانی بخورد در حالی که مرورگر بیعیب کار میکند رفتار طبیعی است، نه خرابی برنامه.
دو استثنا را از همین ابتدا به خاطر بسپارید: حالت TUN در لایه شبکه ترافیک را میگیرد و ابزارهای خط فرمان بدون هیچ تنظیمی کار میکنند؛ اما SSH در هیچ شرایطی http_proxy را نمیپذیرد و به ProxyCommand نیاز دارد.
ابزار به ابزار تنظیم کنید
- 1
متغیر محیطی، فقط برای همین نشست
در لینوکس و macOS متغیرهای https_proxy و http_proxy را با export روی http://127.0.0.1:7897 بگذارید. در PowerShell همان مقدار را به $env:HTTPS_PROXY بدهید. تا وقتی پنجره باز است اعتبار دارد؛ برای دائمیشدن آن را در .bashrc یا پروفایل PowerShell بنویسید.
- 2
Git
مقدار git config --global http.proxy را روی نشانی پراکسی بگذارید و برای https هم همین کار را بکنید. اگر فقط GitHub را میخواهید، از شکل مقیددار git config --global http.https://github.com/.proxy استفاده کنید. برای حذف از --unset استفاده کنید.
- 3
npm و pip
دستور npm config set proxy پراکسی تعیین میکند و registry آینه بستهها را عوض میکند؛ این دو یکی نیستند. pip پارامتر --proxy را برای اجرای موردی میپذیرد یا همان مقدار را در pip.conf میگیرد.
- 4
SSH
در ~/.ssh/config برای میزبان مورد نظر یک خط ProxyCommand اضافه کنید. در لینوکس و macOS معمولاً nc -X 5 -x برای SOCKS5 استفاده میشود و در ویندوز ابزار connect همراه Git کار را انجام میدهد.
بررسی نتیجه و اشتباههای رایج
با curl نشانی ipinfo.io/ip را بگیرید. اگر نشانی بازگشتی متعلق به گره شماست، پراکسی در حال استفاده است. اگر curl کار میکند ولی git نه، همان تنظیم را جداگانه با git config --global --get http.proxy بررسی کنید.
- مقدار https_proxy با http:// شروع میشود نه https://؛ این پروتکل خود سرور پراکسی است
- در انتهای نشانی پراکسی اسلش یا مسیر نگذارید
- با no_proxy نشانیهای localhost و 127.0.0.1 و دامنههای داخلی سازمان را کنار بگذارید
پرسشهای رایج
متغیرها را تنظیم کردم ولی هنوز connection refused میگیرم.
به ترتیب احتمال: شماره پورت اشتباه، برنامه در حال اجرا نیست، یا مقدار با https:// شروع شده است. پورت ترکیبی نمایشدادهشده در برنامه را با آنچه نوشتهاید مقایسه کنید.
بعد از تنظیم پراکسی نشانیهای داخلی باز نمیشوند.
دامنهها و زیرشبکههای داخلی را به همراه localhost و 127.0.0.1 در no_proxy بگذارید. Git و npm هم تنظیم جداگانه خودشان را برای این کار دارند.