Comment utiliser GitHub avec des proxy rigoureux?
Question
Étant donné les contraintes suivantes, comment utiliser GitHub sous Windows et Unix?
- Tous les accès à Internet sont limités à un proxy
- Le proxy n'autorise les connexions que sur les ports 80 et 443
- La méthode CONNECT est uniquement activée pour 443
- L'authentification par proxy est requise (NTLM ou Basic)
La solution
Voir un "Utilisation du github par des proxies draconiennes (Windows And Unix) ” par Jeff Tchang (anciennement disponible à partir de autre emplacement ), qui inclut des instructions pour les plates-formes Windows et Unix, résumées ci-dessous.
Unix
- Télécharger Git.
- Téléchargez et installez tire-bouchon .
-
Editez ou créez le fichier
~ / .ssh / config
et mettez ce qui suit: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
-
Si tout est configuré correctement, vous devriez pouvoir exécuter
.ssh github.com
et voirBonjour l'utilisateur! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès au shell.
La connexion à github.com est fermée.Si cela ne fonctionne pas, vous pouvez exécuter
ssh ssh.github.com
et obtenir exactement la même chose. Si la première commande ne fonctionne pas, cela signifie que vous utilisez un proxy qui bloque CONNECT sur le port 22. Presque aucun proxy ne bloque CONNECT sur le port 443 car vous en avez besoin pour SSL.
Windows
- Téléchargez msysgit . Quelques réglages:
- "Exécuter Git à partir de l'invite de commande Windows"
- “Utiliser OpenSSH” (celui-ci est très important)
- Choisissez vos fins de ligne
- Télécharger connect.c . Cet outil mérite son propre message, principalement en raison de sa simplicité absolue. Il reflète le tire-bouchon de l'outil open source et est utilisé pour la création de tunnels par l'intermédiaire de mandataires. Oui, le nom de l’outil s’appelle vraiment «connect.c». Pour les utilisateurs Windows, un fichier binaire précompilé est disponible. Je mets mon
connect.exe
dansC: \ Windows \ connect.exe
. - Décidez si vous souhaitez utiliser Windows
cmd.exe
pour effectuer des tâches ou le shell de style Cygwin. Ou les deux. -
Configurez le shell Cygwin Git bash.
Pour le shell de style Cygwin, ouvrez l’icône Git, éditez le fichier
~ / .ssh / config
et assurez-vous que le fichier n’a pas d’extension. Placez les éléments suivants dans ce fichier et notez comment les chemins sont spécifiés.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
-
Configurez le shell
cmd.exe
de Windows.Supposons que vous n’aimiez pas le shell Git Bash. Vous préférez l’interpréteur cmd.exe.
- Accédez à votre fichier de configuration sous
C: \ Documents and Settings \ .ssh \ config
.
- Faites-en une copie ou créez-en une nouvelle. J'ai appelé le mien
config-windows
Mettez les éléments suivants dans le fichier, en accordant une attention particulière aux séparateurs de chemins et aux styles.
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
- Accédez à votre fichier de configuration sous
Pour plus de détails, voir le blog complet. publier .
Autres conseils
[Comme mon ajout à la première réponse donnée ci-dessus n'a pas été approuvé dans les quatre jours, je l'ai mis ici.]
Notez que tire-bouchon
et connect
, ainsi que la commande Unix standard nc
ne prennent en charge que l'authentification de base (qui transmet de manière non sécurisée le mot de passe).
tunnel-auth
version 0.04 prend également en charge l'authentification Digest. .
Si votre proxy requiert une authentification NTLM, toutes ces commandes peuvent être combinées parfaitement avec cntlm
comme suit:
Choisissez un port local (par exemple, 8080 comme dans les exemples ci-dessous) sur lequel cntlm
écoutera
(effectuer l'authentification de l'utilisateur avec le proxy et transférer tout
autres paquets vers / depuis le proxy), définissez le port, etc. (par exemple, dans
/etc/cntlm.conf
), et utilisez à la place de la commande Proxy donnée ci-dessus (avec le numéro de port respectif inséré):
Tire-bouchon ProxyCommand 127.0.0.1 8080% h% p
ou
ProxyCommand connect -H 127.0.0.1:8080% h% p
ou
Commande de proxy nc -X connecter -x 127.0.0.1:8080% h% p
ou
ProxyCommand tunnel-auth -p 127.0.0.1:8080 -r% h:% p
Mon scénario était un peu différent de celui de Jeff Tchang (mais basé sur son post) mais pourrait être utile ici.
Tous nos accès Internet sur les lieux de travail / entreprises se font via un proxy non authentifiant. J'ai pu cloner de mais ne pas pousser vers github: en cours d'exécution
git push -u origin master
reviendrait
ssh: connect to host github.com port 22: Operation timed out
fatal: The remote end hung up unexpectedly
Basé sur http: //returnbooleantrue.blogspot. com / 2009/06 / using-github-through-draconian-proxies.html et http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x et http://www.mtu.net/~engstrom/ssh-proxy.php J'ai pu télécharger / install corkscrew et ajoutez ce qui suit à mon ~ / .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
Quelques points à noter:
-
J'utilise également ma clé privée d'entreprise / d'entreprise avec GitHub. Si vous ne l'utilisez pas, vous devrez ajouter un "IdentityFile". ligne
-
Contrairement à Jeff Tchang (et grâce à mtu.net), je n'avais pas besoin de l'option "~ / .ssh / myauth". à la fin de la ligne ProxyCommand
-
Je n'ai pas eu besoin de configurer une section hôte ssh.github.com.
J'espère que cela vous aidera.