Domanda

Dati i seguenti vincoli, come posso usare GitHub da Windows e Unix?

  • Tutti gli accessi a Internet sono limitati a un proxy
  • Il proxy consente solo connessioni in uscita sulla porta 80 e 443
  • Il metodo CONNECT è abilitato solo per 443
  • È richiesta l'autenticazione proxy (NTLM o Basic)
È stato utile?

Soluzione

Guarda un & # 8220; Utilizzo di Github Through Draconian Proxies (Windows And Unix) & # 8221; di Jeff Tchang (precedentemente disponibile da un'altra posizione ), che include istruzioni per piattaforme Windows e Unix, riepilogate di seguito.

Unix

  1. Scarica Git.
  2. Scarica e installa cavatappi .
  3. Modifica o crea il file ~ / .ssh / config e inserisci quanto segue:

    ProxyCommand /usr/bin/corkscrew proxy.example.com 443 %h %p ~/.ssh/myauth
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "/media/truecrypt1/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "/media/truecrypt1/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
  4. Se tutto è configurato correttamente dovresti essere in grado di eseguire ssh github.com e vedere

      

    Ciao utente! Sei stato autenticato con successo, ma GitHub non fornisce l'accesso alla shell.
      Connessione a github.com chiusa.

    Se non funziona, puoi eseguire ssh ssh.github.com e ottenere esattamente la stessa cosa. Se il primo comando non ha funzionato significa che stai utilizzando un proxy che blocca CONNECT sulla porta 22. Quasi nessun proxy blocca CONNECT sulla porta 443 perché ne hai bisogno per SSL.

di Windows

  1. Scarica msysgit . Alcune impostazioni:
    • & # 8220; Esegui Git dal prompt dei comandi di Windows & # 8221;
    • & # 8220; Usa OpenSSH & # 8221; (questo è molto importante)
    • Scegli le terminazioni di riga
  2. Scarica connect.c . Questo strumento merita il proprio post principalmente per la sua assoluta semplicità. Rispecchia il cavatappi dello strumento open source e viene utilizzato per il tunneling attraverso i proxy. Sì, il nome dello strumento è davvero chiamato & # 8220; connect.c. & # 8221; Per gli utenti Windows è disponibile un file binario precompilato. Ho inserito il mio connect.exe in C: \ Windows \ connect.exe .
  3. Decidi se vuoi usare il cmd.exe di Windows per fare cose o la shell in stile Cygwin. O entrambi.
  4. Imposta la shell bash di Cygwin Git.

    Per la shell in stile Cygwin, avvia l'icona Git e modifica il file ~ / .ssh / config e assicurati che il file non abbia estensione. Inserisci quanto segue in quel file e osserva come vengono specificati i percorsi.

    ProxyCommand /c/windows/connect.exe -H username@proxy.example.com:443 %h %p
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "/c/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "/c/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
  5. Imposta la shell cmd.exe di Windows.

    Supponi che non ti piaccia la shell Git Bash. Preferisci l'interprete cmd.exe.

    • Vai al tuo file di configurazione in C: \ Documents and Settings \ .ssh \ config
    • Creane una copia o creane una nuova. Ho chiamato il mio config-windows

    Inserisci quanto segue nel file, prestando di nuovo molta attenzione ai separatori di percorso e agli stili.

    ProxyCommand C:/Windows/connect.exe -H username@proxy.example.com:443 %h %p
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "C:\Keys\GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "C:\Keys\GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    

Per tutti i dettagli, vedi il blog completo dopo .

Altri suggerimenti

[Dato che la mia aggiunta alla prima risposta fornita sopra non è stata approvata entro quattro giorni, l'ho messa qui.]

Nota che cavatappi e connect , così come il comando Unix standard nc supportano solo l'autenticazione di base (che trasmette in modo insicuro la password).
tunnel-auth versione 0.04 supporta inoltre l'autenticazione digest .

Nel caso in cui il tuo proxy richieda l'autenticazione NTLM, tutti questi comandi possono essere combinati molto bene con cntlm come segue:

Scegli una porta locale (ad esempio 8080 come negli esempi seguenti) su cui cntlm ascolterà (eseguendo l'autenticazione dell'utente con il proxy e inoltrando qualsiasi ulteriori pacchetti da / verso il proxy), impostare la porta ecc. (ad es. in /etc/cntlm.conf ) e utilizzare al posto del ProxyCommand indicato sopra (con il rispettivo numero di porta inserito):

  

Cavatappi ProxyCommand 127.0.0.1 8080% h% p

o

  

ProxyCommand connect -H 127.0.0.1:8080% h% p

o

  

ProxyCommand nc -X connect -x 127.0.0.1:8080% h% p

o

  

ProxyCommand tunnel-auth -p 127.0.0.1:8080 -r% h:% p

Il mio scenario era un po 'diverso da quello di Jeff Tchang (ma basato sul suo post) ma potrebbe essere utile qui.

Tutto il nostro accesso a Internet sul posto di lavoro / aziendale avviene tramite un proxy non autenticante. Sono stato in grado di clonare da ma non ho inviato a github: in esecuzione

git push -u origin master

ritornerebbe

ssh: connect to host github.com port 22: Operation timed out
fatal: The remote end hung up unexpectedly

Basato su http: //returnbooleantrue.blogspot. com / 2009/06 / using-github-through-draconian-proxies.html e http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x e http://www.mtu.net/~engstrom/ssh-proxy.php sono stato in grado di scaricare / install cavatappi e aggiungi quanto segue al mio ~ / .ssh / config:

Host github.com
  User git
  Port 22
  Hostname github.com
  TCPKeepAlive yes
  IdentitiesOnly yes
  ProxyCommand /usr/local/bin/corkscrew proxy.<my-workplace>.com 8080 %h %p 

Alcuni punti da notare:

  • Uso la mia chiave privata sul posto di lavoro / aziendale anche con GitHub: in caso contrario dovrai aggiungere un " IdentityFile " riga

  • A differenza di Jeff Tchang (e grazie a mtu.net) non avevo bisogno di avere " ~ / .ssh / myauth " alla fine della linea ProxyCommand

  • Non avevo bisogno di impostare una sezione Host di ssh.github.com.

Spero che questi aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top