Git SSH å®å ¨ç»è¿ HTTP 代ç | AIçæåç¿»è¯
Question: å½ä½¿ç¨ SSH è¿è¡ GIT_SSH_COMMAND="ssh -vvv" git pull --rebase æ¶ï¼å®ä¼ç»è¿ç³»ç»ç HTTP å HTTPS 代ç设置ï¼å¦ export HTTP_PROXY å macOS ç³»ç»è®¾ç½®ä¸çç½ç»ä»£çï¼åï¼
Answer:
æ¯çï¼å®ä¼å®å ¨ç»è¿è¿äºè®¾ç½®ã
为ä»ä¹ä¼è¿æ ·
- Git æä¸¤ç§å®å
¨ä¸åçä¼ è¾åè®®ï¼
- HTTPS åè®®ï¼
https://github.com/...URLsï¼â Git å é¨ä½¿ç¨ libcurl â éµå¾ªæ åç proxy ç¯å¢åéï¼http_proxy,https_proxy,HTTP_PROXY,HTTPS_PROXY,all_proxyï¼ä»¥å macOS ç³»ç»ç½ç»ä»£ç设置ï¼curl é常éè¿ macOS API æç¯å¢å鿥éµå¾ªè¿äºè®¾ç½®ï¼ã - SSH åè®®ï¼
git@github.com:...æssh://git@github.com/...URLsï¼â Git åªæ¯ç®åå°è¿è¡sshå½ä»¤ï¼æè æ¯éè¿GIT_SSH_COMMAND/core.sshCommandæå®çå½ä»¤ï¼â SSH client æ°¸è¿ä¸ä¼æ¥ç HTTP/HTTPS proxy åéã
- HTTPS åè®®ï¼
ssh (OpenSSH) ä¸ä¼ä¸ºäºèªå·±çè¿æ¥å»è¯»åæä½¿ç¨ HTTP_PROXYãHTTPS_PROXY æ macOS ç³»ç» HTTP/HTTPS 代ç设置ãè¿äºåéä»
å¯¹æ¯æ HTTP/HTTPS åè®®ç clientï¼å¦ curl, git over https, wget çï¼ææä¹ã
æ»ç»è¡¨
å¦ä½è®© SSH éè¿ä»£çï¼å¦æéè¦ï¼
ä½ å¿ é¡»æå¨é ç½® SSH client æ¬èº«æ¥ä½¿ç¨ä»£ç ââ å¸¸è§æ¹æ³å¦ä¸ï¼
-
HTTP CONNECT proxyï¼å¤§å¤æ°å ¬å¸çº§ HTTP 代çï¼
# å¨ ~/.ssh/config ä¸ Host github.com ProxyCommand connect -H proxy.example.com:8080 %h %pï¼éè¦
connectå·¥å ·æç±»ä¼¼å·¥å · ââ å¯éè¿ brew install connect å®è£ ï¼ -
SOCKS5 proxyï¼å¸¸ç¨äº Shadowsocks, v2ray, Clash çå·¥å ·ï¼
# å¨ ~/.ssh/config ä¸ Host github.com ProxyCommand nc -x 127.0.0.1:1080 %h %pæè
GIT_SSH_COMMAND="ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p'" git pull --rebase -
Jump host / bastion (ProxyJump)
GIT_SSH_COMMAND="ssh -J user@bastion.example.com" git pull --rebase -
éè¿ HTTPS ç«¯å£ 443 ä½¿ç¨ SSHï¼GitHub æ¯ææ¤æä½ï¼
- å° remote ä¿®æ¹ä¸º
ssh://git@ssh.github.com:443/user/repo.git - è½ç¶ä½¿ç¨äº 443 端å£ï¼ä½è¿ä»ç¶æ¯ SSH åè®®ï¼ä¸æ¯ HTTPï¼ï¼ä¸è¿å¯¹äºæäºé²ç«å¢å¯è½æç»è¿ä½ç¨ï¼ä½å®ä»ç¶ä¸ä¼ä½¿ç¨ HTTP_PROXYã
- å° remote ä¿®æ¹ä¸º
å¿«éæ£æ¥ä½ æ£å¨ä½¿ç¨çåè®®
git remote -v
git@github.com:...æssh://â SSHï¼å¿½ç¥ HTTP 代çï¼https://github.com/...â HTTPSï¼ä½¿ç¨ HTTP/HTTPS 代çï¼
å æ¤ï¼å½ä½ è¿è¡ GIT_SSH_COMMAND="ssh -vvv" git pull --rebase å¹¶çå° SSH 身份éªè¯ / port 22 æµéæ¶ï¼ä½ 使ç¨çæ¯ SSH åè®® ââ HTTP/HTTPS 代ç设置ï¼å
æ¬ macOS ç³»ç»è®¾ç½®ï¼ä¼è¢«å®å
¨å¿½ç¥ã
References:
- Git - Environment Variables
- Configure Git to use a proxy (HTTPS or SSH+GIT)
- Use Proxy for Git/GitHub
- How do I pull from a Git repository through an HTTP proxy?
