ฉันจะทำให้ Git ใช้พร็อกซีเซิร์ฟเวอร์ได้อย่างไร
ฉันต้องตรวจสอบรหัสจากเซิร์ฟเวอร์ Git แต่มันแสดง "คำขอหมดเวลา" ทุกครั้ง ฉันจะรับสิ่งนี้ได้อย่างไร
ฉันจะตั้งค่าพร็อกซีเซิร์ฟเวอร์ได้อย่างไร
ฉันจะทำให้ Git ใช้พร็อกซีเซิร์ฟเวอร์ได้อย่างไร
ฉันต้องตรวจสอบรหัสจากเซิร์ฟเวอร์ Git แต่มันแสดง "คำขอหมดเวลา" ทุกครั้ง ฉันจะรับสิ่งนี้ได้อย่างไร
ฉันจะตั้งค่าพร็อกซีเซิร์ฟเวอร์ได้อย่างไร
คำตอบ:
คำสั่งที่จะใช้:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
เป็นผู้ใช้พร็อกซีของคุณproxypwd
เป็นรหัสผ่านพร็อกซีของคุณproxy.server.com
เป็น URL ของพร็อกซีเซิร์ฟเวอร์ของคุณ8080
เป็นพอร์ตพร็อกซีที่กำหนดค่าบนพร็อกซีเซิร์ฟเวอร์ของคุณโปรดทราบว่าสิ่งนี้ใช้ได้กับทั้ง repos http และ https
หากคุณตัดสินใจที่จะรีเซ็ตพร็อกซีนี้ในเวลาใดก็ได้และทำงานโดยไม่ใช้พร็อกซี:
คำสั่งที่จะใช้:
git config --global --unset http.proxy
ในที่สุดการตรวจสอบพร็อกซีที่ตั้งค่าในปัจจุบัน:
git config --global --get http.proxy
%40
แทน@
สตริงชื่อผู้ใช้ / รหัสผ่านแม้ว่าฉันจะไม่ได้ทดสอบตัวเอง หวังว่ามันจะช่วย :-)
สิ่งนี้ใช้ได้กับฉันใน windows XP หลังไฟร์วอลล์ขององค์กร
ฉันไม่จำเป็นต้องติดตั้งพรอกซีท้องถิ่นหรือซอฟต์แวร์อื่นใดนอกจาก git v1.771 จากhttp://code.google.com/p/msysgit/downloads/list?can=3
$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master
proxyuser = ผู้ใช้พร็อกซี่ที่ฉันได้รับมอบหมายจากแผนกไอทีของเราในกรณีของฉันมันเป็นผู้ใช้ windows เดียวกับที่ฉันใช้ในการเข้าสู่ระบบพีซีของฉันผู้ใช้ Active Directory
proxypwd = รหัสผ่านของผู้ใช้พร็อกซีของฉัน
proxy.server.com:8080 = ชื่อพร็อกซีและพอร์ตฉันได้รับจากแผงควบคุมตัวเลือกอินเทอร์เน็ตการเชื่อมต่อปุ่มการตั้งค่า Lan ปุ่มขั้นสูงภายในส่วนพร็อกซีเซิร์ฟเวอร์ใช้ชื่อเซิร์ฟเวอร์และพอร์ตในแถวแรก (http) .
mygithubuser = ผู้ใช้ที่ฉันใช้เพื่อเข้าสู่ระบบ github.com
mygithubpwd = รหัสผ่านสำหรับผู้ใช้ github.com ของฉัน
repoUser = เจ้าของผู้ใช้ repo
repoName = ชื่อของ repo
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
รวมถึงใบรับรองที่ดาวน์โหลดตามที่อธิบายไว้ในsimplicidade.org/notes/archives/2011/06/… (ขอบคุณ: stackoverflow.com/a/7206627/98528 ) ทำเพื่อฉัน!
git://
โปรโตคอล
ตั้งค่าตัวแปรระบบการตั้งชื่อที่มีค่าของhttp_proxy
ProxyServer:Port
นั่นคือทางออกที่ง่ายที่สุด ใช้https_proxy
ตามที่ daefu ชี้ให้เห็นในความคิดเห็น
การตั้งค่า gitproxy (ดังที่กล่าวไว้ใน sleske) เป็นอีกทางเลือกหนึ่ง แต่ต้องใช้คำสั่ง "" ซึ่งไม่ตรงไปตรงมาเหมือนกับวิธีแก้ไขปัญหาข้างต้น
ข้อมูลอ้างอิง: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
จำเป็นสำหรับ HTTP URL และhttps_proxy
จำเป็นสำหรับ HTTPS URL อีกวิธีหนึ่งสามารถตั้งค่าall_proxy
สำหรับ URL ทั้งหมด ดูENVIRONMENT
ในส่วนขด (1) อย่างไรก็ตามในขณะที่การตั้งค่าตัวเลือก git-config http.proxy
จะใช้สำหรับทั้ง HTTP และ HTTPS URL ดูhttp.proxy
ในGit-config (1)
หากวิธีบรรทัดคำสั่งในการกำหนดค่าพร็อกซีเซิร์ฟเวอร์ของคุณไม่ทำงานคุณสามารถแก้ไข. gitconfig (ในรูทโปรไฟล์ของคุณซึ่งอาจซ่อนทั้งใน C: \ Documents และ Settings และในไดรฟ์เครือข่าย) และเพิ่มสิ่งนี้ :
[http]
proxy = http://username:password@proxy.at.your.org:8080
แม้ว่า YMMV จะครอบคลุมเฉพาะขั้นตอนแรกของการกำหนดค่าบรรทัดคำสั่งเท่านั้น คุณอาจต้องแก้ไขการตั้งค่าระบบคอมไพล์ด้วยและฉันก็ไม่รู้ว่าพวกเขาซ่อนอะไรอยู่
เพื่อเป็นทางเลือกแทนการใช้git config --global http.proxy address:port
คุณสามารถตั้งค่าพร็อกซีบนบรรทัดคำสั่ง:
git -c "http.proxy=address:port" clone https://...
ข้อดีคือไม่ได้ตั้งค่าพร็อกซีอย่างต่อเนื่อง ภายใต้ Bash คุณอาจตั้งชื่อแทน:
alias git-proxy='git -c "http.proxy=address:port"'
หากคุณใช้อูบุนตูให้ทำสิ่งต่อไปนี้ ...
ขั้นตอนที่ 1: ติดตั้งเกลียว
$ sudo apt-get install corkscrew
ขั้นตอนที่ 2: เขียนสคริปต์ชื่อ git-proxy.sh และเพิ่มรายการต่อไปนี้
#!/bin/sh
exec corkscrew <name of proxy server> <port> $*
# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*
ขั้นตอนที่ 3: ทำให้สคริปต์ทำงานได้
$ chmod +x git-proxy.sh
ขั้นตอนที่ 4: ตั้งค่าคำสั่งพร็อกซีสำหรับ GIT โดยการตั้งค่าตัวแปรสภาพแวดล้อม
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
ตอนนี้ใช้คำสั่ง git เช่น
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
"$@"
$*
ดูคู่มือเชลล์ของคุณสำหรับรายละเอียดเพิ่มเติม
ประสบปัญหาเดียวกันเนื่องจากมี.gitconfig
ไฟล์หลายไฟล์ใน windows ทำตามขั้นตอนด้านล่างเพื่อแก้ไขปัญหาเดียวกัน:
ขั้นตอนที่ 1:เปิด Git BASH
ขั้นตอนที่ 2:ค้นหา.gitconfig
ดำเนินการคำสั่งต่อไปนี้:
git config --list --global --show-origin
ขั้นตอนที่ 3:คัดลอกเนื้อหาด้านล่างใน.gitconfig
:
[http]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[https]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[url "http://github.com/"]
insteadOf = git://github.com/
[user]
name = Arpit Aggarwal
email = aggarwalarpit.89@gmail.com
ลองใส่สิ่งต่อไปนี้ในไฟล์ ~ / .gitconfig:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
สำหรับโปรโตคอล git (git: // ... ) ให้ติดตั้ง socat และเขียนสคริปต์เช่น:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
ทำให้มันใช้งานได้ใส่ไว้ในพา ธ ของคุณและใน~/.gitconfig
ชุดของคุณcore.gitproxy
เป็นชื่อของสคริปต์นั้น
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
เพื่อทำให้ GIT ใช้พรอกซีโดยไม่ต้องยุ่งกับ git config
มีบางสิ่งที่ฉันสังเกตเห็นและต้องการแบ่งปันที่นี่:
git config --global http.proxy http://<proxy address>:<port number>
วิธีการข้างต้นจะใช้ไม่ได้กับ ssh URL (เช่นgit@github.com:<user name>/<project name>.git
):
git clone git@github.com:<user name>/<project name>.git // will not use the http proxy
และสิ่งต่าง ๆ จะไม่เปลี่ยนแปลงหากเราตั้งค่า SSH ผ่านพอร์ต HTTPS ( https://help.github.com/th/articles/using-ssh-over-the-https-portพอร์ต) เพราะมันเปลี่ยนเฉพาะพอร์ต (22 โดยค่าเริ่มต้น ) การเชื่อมต่อ ssh เชื่อมต่อกับ
(ไม่ใช่เจ้าของภาษาอังกฤษโปรดปรับแต่งคำพูดของฉันหากจำเป็น)
ฉันทำงานบน Windows XP ที่ทำงาน (รัฐ / รัฐบาล) ดังนั้นฉันจึงทำการวิจัยและพบสิ่งนี้ที่นี่และมันก็ใช้ได้สำหรับฉัน หวังว่าจะช่วย :)
http_proxy ตัวแปรสภาพแวดล้อม
หากคุณใช้พร็อกซีเซิร์ฟเวอร์หรือไฟร์วอลล์คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม http_proxy เพื่อเข้าถึง url บางส่วนจาก commandline ตัวอย่าง: การติดตั้ง ppm สำหรับ perl หรือใช้ rpm ใน linux, อัปเดต ubuntu
ตั้งค่าตัวแปร http_proxy ด้วยชื่อโฮสต์หรือที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์: http_proxy = http: // [proxy.example.org]
หากพร็อกซีเซิร์ฟเวอร์ต้องการชื่อผู้ใช้และรหัสผ่านให้รวมไว้ในแบบฟอร์มต่อไปนี้: http_proxy = http: // [ชื่อผู้ใช้: password@proxy.example.org]
หากพร็อกซีเซิร์ฟเวอร์ใช้พอร์ตอื่นที่ไม่ใช่ 80 ให้ระบุหมายเลขพอร์ต: http_proxy = http: // [ชื่อผู้ใช้: password@proxy.example.org: 8080]
Windows XP
- เปิดแผงควบคุมแล้วคลิกไอคอนระบบ
- บนแท็บขั้นสูงคลิกที่ตัวแปรสภาพแวดล้อม
- คลิกใหม่ในแผงตัวแปรระบบ
- เพิ่ม http_proxy ด้วยข้อมูลพร็อกซีที่เหมาะสม (ดูตัวอย่างด้านบน)
Linux, Solaris หรือ HP-UX
ตั้งค่าตัวแปรสภาพแวดล้อม http_proxy โดยใช้คำสั่งเฉพาะสำหรับเชลล์ของคุณ (เช่นชุดหรือส่งออก) ในการเปลี่ยนแปลงนี้แบบถาวรให้เพิ่มคำสั่งลงในไฟล์โปรไฟล์ที่เหมาะสมสำหรับเชลล์ ตัวอย่างเช่นใน bash ให้เพิ่มบรรทัดดังต่อไปนี้ในไฟล์. bash_profile หรือ. bashrc ของคุณ:
- http_proxy = http: // [ชื่อผู้ใช้: รหัสผ่าน @ ชื่อโฮสต์: พอร์ต];
- ส่งออก $ http_proxy
นอกเหนือจากคำตอบที่ฉันพบว่ามีประโยชน์ในการพิจารณา 2 คะแนนเหล่านี้:
อาจต้องบังคับใช้รูปแบบการตรวจสอบสิทธิ์:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
นอกจากนี้โดยทั่วไปแล้วจะมี schema การตรวจสอบความถูกต้อง NTLM อาจต้องระบุโดเมนโฆษณาอย่างชัดเจน
ในทุบตีคอมไพล์:
echo %userdomain%
และอัปเดต http.proxy ตามลำดับ:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
อย่างไรก็ตามการตรวจสอบอาจได้รับความช่วยเหลือโดยเพิ่มบันทึก CURL:
export GIT_CURL_VERBOSE=1
git config --global http.proxyAuthMethod basic
ใช้ Git gersion 2.8.3 ไม่ได้ส่งการรับรองความถูกต้องใด ๆ จนกว่าฉันจะตั้งค่าพารามิเตอร์การตั้งค่านี้
หากคุณมีการติดตั้งและกำหนดค่าtsocksหรือพร็อกซีคุณสามารถทำได้
$ tsocks git clone <you_repository>
หรือ
$ proxychains git clone <you_repository>
เพื่อให้สั้นลงฉันได้สร้างลิงก์สัญลักษณ์/usr/bin/p
เพื่อproxychains
ให้ฉันสามารถใช้งานได้เช่นนี้
p git clone <you_repository>
และฉันสามารถใช้มันเพื่อ proxy คำสั่งใด ๆ
p <cmd-need-be-proxied>
โดยวิธีการที่ proxychains ไม่ได้รับการปรับปรุงเป็นเวลานานคุณอาจต้องการลองproxychians-ng
การตั้งค่า git proxy บนเทอร์มินัล
ถ้า
ตั้งทั่วโลกเพียงครั้งเดียว
git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port
หากคุณต้องการตั้งค่าพร็อกซีสำหรับโครงการ git เพียงโครงการเดียว (อาจมีบางสถานการณ์ที่คุณไม่ต้องการใช้พรอกซีเดียวกันหรือพร็อกซีใด ๆ เลยสำหรับการเชื่อมต่อ git บางอย่าง)
//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port
หากคุณต้องการแสดงการตั้งค่าพร็อกซีปัจจุบัน
git config --list
ถ้าคุณต้องการลบ proxy ทั่วโลก
git config --global --unset http.proxy
git config --global --unset https.proxy
ถ้าคุณต้องการลบ proxy สำหรับหนึ่ง git root เท่านั้น
//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
นี่คือการตั้งค่าพร็อกซี
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
ฉันทำตามคำตอบส่วนใหญ่ที่แนะนำที่นี่ ครั้งแรกที่ฉันได้รับข้อผิดพลาดต่อไปนี้:
ร้ายแรง: ไม่สามารถเข้าถึง ' https://github.com/folder/sample.git/ ': schannel: ถัดไป InitializeSecurityContext ล้มเหลว: ข้อผิดพลาดที่ไม่รู้จัก (0x80092012) - ฟังก์ชันการเพิกถอนไม่สามารถตรวจสอบการเพิกถอนใบรับรอง
จากนั้นฉันได้ลองคำสั่งต่อไปนี้โดย @Salim Hamidi
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
แต่ฉันได้รับข้อผิดพลาดต่อไปนี้:
ร้ายแรง: ไม่สามารถเข้าถึง ' https://github.com/folder/sample.git/ ': ได้รับรหัส HTTP 407 จากพร็อกซีหลัง CONNECT
สิ่งนี้อาจเกิดขึ้นหากพร็อกซีเซิร์ฟเวอร์ไม่สามารถตรวจสอบใบรับรอง SSL ดังนั้นเราต้องการตรวจสอบให้แน่ใจว่าการยืนยัน SSL ปิด (ไม่แนะนำสำหรับเว็บไซต์ที่ไม่น่าเชื่อถือ) ดังนั้นฉันได้ทำตามขั้นตอนต่อไปนี้ซึ่งแนะนำโดย @Arpit แต่มีการเปลี่ยนแปลงเล็กน้อย:
1. ก่อนอื่นให้แน่ใจว่าจะลบการตั้งค่าพร็อกซีก่อนหน้านี้:
git config --global --unset http.proxy
2. ทำรายการและรับเนื้อหา gitconfig
git config --list --show-origin
3. อัปเดตเนื้อหาของไฟล์ gitconfig ล่าสุดดังนี้:
[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
ฉันได้ลองคำตอบทั้งหมดข้างต้นแล้วและไม่มีอะไรทำงานให้ฉันได้เนื่องจากมีปัญหาการเข้ารหัสรหัสผ่านพร็อกซี
คำสั่งนี้ใช้งานได้:
git config --global http.proxy http://username@proxy.example.com:PortNumber
อย่าป้อนรหัสผ่านในคำสั่งของคุณ มันจะถามแบบไดนามิกเมื่อคุณพยายามเชื่อมต่อกับ repo git ใด ๆ
สำหรับผู้ใช้ Windows: หากมีgit config
หรือset http_proxy=
ไม่ทำงานคำตอบนี้อาจช่วย
แทนที่โปรโตคอลเก็บคอมไพล์ด้วยgit://
http://
หมายเหตุคุณจะต้องตั้งค่าhttp_proxy
ครั้งแรกอย่างไรก็ตาม
หลังจากพยายามแก้ปัญหาทุกอย่างในหน้านี้อย่างไม่รู้จักเหน็ดเหนื่อยงานของฉันก็คือใช้คีย์ SSH แทน!