Come posso ottenere Git per utilizzare un server proxy?
Devo estrarre il codice da un server Git, ma mostra sempre "Richiesta scaduta". Come posso aggirare questo?
In alternativa, come posso impostare un server proxy?
Come posso ottenere Git per utilizzare un server proxy?
Devo estrarre il codice da un server Git, ma mostra sempre "Richiesta scaduta". Come posso aggirare questo?
In alternativa, come posso impostare un server proxy?
Risposte:
Comando da usare:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
all'utente proxyproxypwd
alla password del proxyproxy.server.com
all'URL del server proxy8080
alla porta proxy configurata sul server proxySi noti che questo funziona sia per i repository http che https.
Se decidi in qualsiasi momento di ripristinare questo proxy e di lavorare senza proxy:
Comando da usare:
git config --global --unset http.proxy
Infine, per controllare il proxy attualmente impostato:
git config --global --get http.proxy
%40
un sostituto per la @
stringa in username / password, anche se non l'ho provato io stesso. Spero che sia d'aiuto. :-)
Questo ha funzionato per me, in Windows XP dietro un firewall aziendale.
Non ho dovuto installare alcun proxy locale o altro software oltre a git v1.771 da 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 = l'utente proxy che mi è stato assegnato dal nostro reparto IT, nel mio caso è lo stesso utente di Windows che utilizzo per accedere al mio PC, l'utente di Active Directory
proxypwd = la password del mio utente proxy
proxy.server.com:8080 = il nome e la porta del proxy, l'ho ottenuto dal Pannello di controllo, Opzioni Internet, Connessioni, Pulsante Impostazioni LAN, Pulsante Avanzate nella sezione Server proxy, utilizzare il nome server e la porta nella prima riga (http) .
mygithubuser = l'utente che utilizzo per accedere a github.com
mygithubpwd = la password per il mio utente github.com
repoUser = il proprietario dell'utente del repository
repoName = il nome del repository
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
più i certificati scaricati come descritto in simplicidade.org/notes/archives/2011/06/… (grazie a: stackoverflow.com/a/7206627/98528 ) lo ha fatto per me!
git://
protocollo.
Impostare una variabile di sistema denominata http_proxy
con il valore di ProxyServer:Port
. Questa è la soluzione più semplice. Rispettivamente, usare https_proxy
come daefu sottolineato nei commenti.
L'impostazione di gitproxy (come menziona sleske) è un'altra opzione, ma che richiede un "comando", che non è così semplice come la soluzione sopra.
Riferimenti: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
è necessario per gli URL HTTP ed https_proxy
è richiesto per gli URL HTTPS. In alternativa, si potrebbe semplicemente impostare all_proxy
per tutti gli URL. Vedere la ENVIRONMENT
sezione in arricciatura (1) . Tuttavia, durante l'impostazione delle opzioni di git-config, http.proxy
viene utilizzato per gli URL HTTP e HTTPS. Vedi http.proxy
in git-config (1) .
Se il modo da riga di comando di configurare il tuo server proxy non funziona, probabilmente puoi semplicemente modificare .gitconfig (nella radice del tuo profilo, che può nascondere sia in C: \ Documents and Settings sia su alcune unità di rete) e aggiungere questo :
[http]
proxy = http://username:password@proxy.at.your.org:8080
YMMV, tuttavia, copre solo il primo passaggio della configurazione della riga di comando. Potrebbe essere necessario modificare anche la configurazione di git di sistema e non ho idea di dove l'abbia nascosto.
In alternativa all'utilizzo git config --global http.proxy address:port
, è possibile impostare il proxy dalla riga di comando:
git -c "http.proxy=address:port" clone https://...
Il vantaggio è che il proxy non è impostato in modo persistente. Sotto Bash potresti impostare un alias:
alias git-proxy='git -c "http.proxy=address:port"'
Se stai usando Ubuntu, fai quanto segue ...
Passaggio 1: installare il cavatappi
$ sudo apt-get install corkscrew
Passaggio 2: scrivere uno script chiamato git-proxy.sh e aggiungere quanto segue
#!/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 $*
Passaggio 3: rendere eseguibile lo script
$ chmod +x git-proxy.sh
Passaggio 4: impostare il comando proxy per GIT impostando la variabile di ambiente
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
Ora usa i comandi git, come
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
"$@"
invece di $*
. Consulta il manuale della shell per maggiori dettagli.
Di fronte allo stesso problema a causa di più .gitconfig
file in Windows, segui i passaggi seguenti per risolvere lo stesso:
Passaggio 1: Apri Git BASH
Passaggio 2: cercare .gitconfig
, eseguendo il comando seguente:
git config --list --global --show-origin
Passaggio 3: copia il contenuto seguente in .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
Prova a mettere quanto segue nel file ~ / .gitconfig:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
Per il protocollo git (git: // ...), installa socat e scrivi uno script come:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
rendilo eseguibile, mettilo nel tuo percorso e nel tuo ~/.gitconfig
set core.gitproxy
con il nome di quello script.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
per fare in modo che GIT usi il proxy senza fare confusione con git config.
C'è qualcosa che ho notato e che voglio condividere qui:
git config --global http.proxy http://<proxy address>:<port number>
Il metodo sopra non funzionerà per gli URL ssh (cioè, git@github.com:<user name>/<project name>.git
):
git clone git@github.com:<user name>/<project name>.git // will not use the http proxy
E le cose non cambieranno se impostiamo SSH sulla porta HTTPS ( https://help.github.com/en/articles/using-ssh-over-the-https-port ) perché cambia solo la porta (22 per impostazione predefinita ) a cui si connette la connessione ssh.
(Non un madrelingua inglese, si prega di affinare le mie parole se necessario)
Lavoro su Windows XP al lavoro (state / gov), quindi ho fatto le mie ricerche e l'ho trovato qui e ha funzionato per me. Spero che sia di aiuto :)
La variabile di ambiente http_proxy
Se si utilizza un server proxy o un firewall, potrebbe essere necessario impostare la variabile di ambiente http_proxy per accedere all'URL dalla riga di comando. Esempio: installazione di ppm per perl o applicazione di rpm in linux, aggiornamento di Ubuntu
Impostare la variabile http_proxy con il nome host o l'indirizzo IP del server proxy: http_proxy = http: // [proxy.example.org]
Se il server proxy richiede un nome utente e una password, includerli nel seguente formato: http_proxy = http: // [nome utente: password@proxy.example.org]
Se il server proxy utilizza una porta diversa da 80, includere il numero di porta: http_proxy = http: // [nome utente: password@proxy.example.org: 8080]
Windows XP
- Apri il Pannello di controllo e fai clic sull'icona Sistema.
- Nella scheda Avanzate, fare clic su Variabili d'ambiente.
- Fai clic su Nuovo nel pannello Variabili di sistema.
- Aggiungi http_proxy con le informazioni proxy appropriate (vedi esempi sopra).
Linux, Solaris o HP-UX
Imposta la variabile d'ambiente http_proxy usando il comando specifico per la tua shell (es. Set o export). Per rendere persistente questa modifica, aggiungere il comando al file di profilo appropriato per la shell. Ad esempio, in bash, aggiungi una riga come la seguente al tuo file .bash_profile o .bashrc:
- http_proxy = http: // [nome utente: password @ nome host: porta];
- esporta $ http_proxy
Oltre a queste risposte, ho trovato utile considerare questi 2 punti:
Potrebbe essere necessario applicare uno schema di autenticazione:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
Inoltre, in genere con lo schema di autenticazione NTLM, potrebbe essere necessario fornire esplicitamente il dominio AD.
In git bash:
echo %userdomain%
E aggiorna il http.proxy di conseguenza:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
Ad ogni modo, l'indagine può essere aiutata aggiungendo i log CURL:
export GIT_CURL_VERBOSE=1
git config --global http.proxyAuthMethod basic
. Git gersion 2.8.3 non ha inviato alcuna autenticazione fino a quando non ho impostato questo parametro di configurazione.
Se hai tsocks o proxychain installati e configurati, puoi farlo
$ tsocks git clone <you_repository>
o
$ proxychains git clone <you_repository>
per renderlo più breve, ho creato un collegamento simbolo /usr/bin/p
per proxychains
, quindi posso usarlo in questo modo
p git clone <you_repository>
e posso usarlo per delegare qualsiasi comando,
p <cmd-need-be-proxied>
a proposito, proxychains non viene aggiornato da molto tempo, potresti provare proxychians-ng
Impostazione del proxy git sul terminale
Se
Impostalo globalmente una volta
git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port
se vuoi impostare il proxy per un solo progetto git (potrebbero esserci alcune situazioni in cui potresti non voler usare lo stesso proxy o alcun proxy per alcune connessioni 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
se si desidera visualizzare le impostazioni proxy correnti
git config --list
se si desidera rimuovere il proxy a livello globale
git config --global --unset http.proxy
git config --global --unset https.proxy
se si desidera rimuovere il proxy per una sola radice git
//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
ecco l'impostazione del proxy
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
Ho seguito la maggior parte delle risposte consigliate qui. Innanzitutto ho ricevuto il seguente errore:
fatale: impossibile accedere a " https://github.com/folder/sample.git/ ": schannel: successivo InitializeSecurityContext non riuscito: errore sconosciuto (0x80092012) - La funzione di revoca non è stata in grado di verificare la revoca del certificato.
Quindi ho provato il seguente comando di @Salim Hamidi
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
Ma ho ricevuto il seguente errore:
fatale: impossibile accedere a " https://github.com/folder/sample.git/ ": codice HTTP 407 ricevuto dal proxy dopo CONNECT
Ciò potrebbe accadere se il server proxy non è in grado di verificare il certificato SSL. Quindi vogliamo assicurarci che la verifica ssl sia disattivata (non consigliata per siti non attendibili), quindi ho fatto i seguenti passi che è stato raccomandato da @Arpit ma con lievi modifiche:
1.Prima assicurati di rimuovere tutte le impostazioni proxy precedenti:
git config --global --unset http.proxy
2. Quindi elencare e ottenere il contenuto di gitconfig
git config --list --show-origin
3.Ultimo aggiornamento del contenuto del file gitconfig come di seguito:
[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
Ho provato tutte le risposte di cui sopra e nulla ha funzionato per me, poiché c'erano problemi di codifica della password proxy.
Questo comando ha funzionato:
git config --global http.proxy http://username@proxy.example.com:PortNumber
Non inserire la password nel comando. Chiederà dinamicamente quando si tenta di connettersi a qualsiasi repository git.
Per gli utenti di Windows: se git config
o set http_proxy=
non funziona, questa risposta può aiutare:
sostituire il git://
protocollo del repository git con http://
. Nota, dovrai impostare il http_proxy
primo, comunque.
Dopo aver provato instancabilmente ogni soluzione in questa pagina, il mio lavoro era usare invece la chiave SSH!