Wie kann ich GitHub durch harte Proxies verwenden?
Frage
Es gelten folgende Einschränkungen, wie kann ich GitHub von Windows und Unix benutzen?
- Alle Zugriffe auf das Internet an einen Proxy beschränkt ist
- Der Proxy erlaubt nur Verbindungen aus auf Port 80 und 443
- CONNECT-Methode ist nur für 443 aktiviert
- Proxy-Authentifizierung erforderlich ist (NTLM oder Basic)
Lösung
Sehen Sie ein „Verwenden von Github Durch Draconian Proxies (Windows und UNIX)“ von Jeff Tchang (früher von eine andere Stelle ), die Anweisungen für Windows und Unix-Plattformen umfasst, im folgenden zusammengefasst.
Unix
- Herunterladen Git.
- Herunterladen und Installieren von Korkenzieher .
-
Bearbeiten oder die Datei
~/.ssh/config
erstellen und setzen Sie die folgenden: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
-
Wenn alles richtig eingerichtet sollten Sie in der Lage sein
ssh github.com
laufen und sehenHallo Benutzer! Sie haben erfolgreich authentifiziert, aber GitHub bietet keine Shell-Zugang.
Der Anschluss an github.com geschlossen.Wenn dies nicht funktioniert, kann
ssh ssh.github.com
und erhalten genau die gleiche Sache laufen. Wenn der erste Befehl nicht funktioniert es bedeutet, dass Sie einen Proxy verwenden, dass die Blöcke CONNECT auf Port 22. Fast blockieren keine Proxies CONNECT auf Port 443, weil Sie für SSL dass benötigen.
Fenster
- Download msysgit . Einige Einstellungen:
- „Run Git von der Windows-Eingabeaufforderung“
- „Use OpenSSH“ (dies ist sehr wichtig)
- Wählen Sie Ihre Zeilenende
- Herunterladen connect.c . Dieses Tool verdient seinen eigenen Beitrag vor allem wegen seiner völligen Einfachheit. Es spiegelt die Open-Source-Tool Korkenzieher und ist für den Tunnelbau durch Proxies verwendet. Ja der Name des Werkzeugs wirklich heißt „connect.c.“ Für Windows-Anwender, eine vorkompilierte Binary zur Verfügung. Ich legte meinen
connect.exe
inC:\Windows\connect.exe
. - Entscheiden Sie, ob Sie die Windows-
cmd.exe
verwenden Sachen oder die Cygwin Stil Shell zu tun. Oder beides. -
die Cygwin Git Bash-Shell ein.
Für die Schale Cygwin Stil starten die Git-Symbol und bearbeiten Sie die Datei
~/.ssh/config
und stellen Sie sicher, dass die Datei keine Erweiterung hat. Legen Sie die folgenden in dieser Datei, und beachten Sie, wie die Pfade angegeben werden.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
-
das Windows
cmd.exe
Shell ein.Angenommen, Sie nicht über die Git Bash-Shell mögen. Sie bevorzugen die cmd.exe-Interpreter.
- Gehen Sie zu Ihrer Konfigurationsdatei bei
C:\Documents and Settings\.ssh\config
- Erstellen Sie eine Kopie davon oder einen neuen machen. Ich rief meinen
config-windows
Setzen Sie die folgenden in der Datei wieder sorgfältig auf Weg Separatoren und Stile zu zahlen.
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
- Gehen Sie zu Ihrer Konfigurationsdatei bei
Für weitere Informationen finden Sie unter den vollständigen Blog Post .
Andere Tipps
[Da meine zusätzlich zu der ersten Antwort oben angegebenen nicht innerhalb von vier Tagen genehmigt bekommen, ich es hier.]
Beachten Sie, dass corkscrew
und connect
sowie die Standard-Unix-Befehl nc
nur die Standardauthentifizierung unterstützt (die insecurely das Passwort überträgt).
tunnel-auth
Version 0.04 zusätzlich unterstützt die Authentifizierung verdauen.
Wenn Ihr Proxy erfordert NTLM-Authentifizierung, all diese Befehle sehr schön kombiniert werden können mit cntlm
wie folgt:
Wählen Sie einen lokalen Port (beispielsweise 8080, wie in den Beispielen unten), auf dem cntlm
zuhören
(Durchführen der Benutzerauthentisierung mit dem Proxy und Weiterleiten irgend
weitere Pakete zu / von dem Proxy), stellten den Port usw. (beispielsweise in
/etc/cntlm.conf
) und anstelle des oben angegebenen Proxycommand verwenden (mit der entsprechenden Portnummer eingefügt):
Proxycommand Korkenzieher 127.0.0.1 8080% h% p
oder
Proxycommand verbinden -H 127.0.0.1:8080% h% p
oder
Proxycommand nc -X -x 127.0.0.1:8080% h% p verbinden
oder
Proxycommand Tunnel-Auth -p 127.0.0.1:8080 -r% h:% p
war mein Szenario ein wenig anders zu Jeff Tchang der (aber auf seinem Posten basiert), aber könnte hier hilfreich sein.
Alle unseres Arbeitsplatz / corporate-Internetzugang sind über ein nicht-Authentifizierung-Proxy. Ich war in der Lage zu klonen von , aber nicht drücken Github: Laufen
git push -u origin master
zurückkehren würde
ssh: connect to host github.com port 22: Operation timed out
fatal: The remote end hung up unexpectedly
Basierend auf http: //returnbooleantrue.blogspot. com / 2009/06 / using-github-through-drakonische-proxies.html und http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x und http://www.mtu.net/~engstrom/ssh-proxy.php konnte ich zum Download / install Korkenzieher und die folgende meiner ~ / .ssh / config hinzu:
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
Einige Punkte zu beachten:
-
ich meinen Arbeitsplatz / corporate private Schlüssel auch mit GitHub: wenn Sie nicht benötigen Sie eine „Identity“ Zeile
hinzufügen
-
Im Gegensatz zu Jeff Tchang (und dank mtu.net) Ich brauche nicht zu haben, die "~ / .ssh / myauth" am Ende der Zeile Proxycommand
-
Ich brauche keine ssh.github.com Abschnitt Host einzurichten.
Hoffe, dass diese Hilfe.