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)
Était-ce utile?

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

  1. Télécharger Git.
  2. Téléchargez et installez tire-bouchon .
  3. 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
    
  4. Si tout est configuré correctement, vous devriez pouvoir exécuter ssh github.com et voir

    .
      

    Bonjour 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

  1. 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
  2. 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 dans C: \ Windows \ connect.exe .
  3. Décidez si vous souhaitez utiliser Windows cmd.exe pour effectuer des tâches ou le shell de style Cygwin. Ou les deux.
  4. 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
    
  5. 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
    

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top