Pregunta

Dadas las siguientes restricciones, ¿cómo puedo usar GitHub desde Windows y Unix?

  • Todo el acceso a Internet está restringido a un proxy
  • El proxy solo permite conexiones en los puertos 80 y 443
  • El método CONNECT solo está habilitado para 443
  • Se requiere autenticación de proxy (NTLM o Basic)
¿Fue útil?

Solución

Vea un "Uso de Github a través de proxies Draconian (Windows y Unix) ” por Jeff Tchang (anteriormente disponible en otra ubicación ), que incluye instrucciones para las plataformas Windows y Unix, resumidas a continuación.

Unix

  1. Descargar Git.
  2. Descargue e instale sacacorchos .
  3. Edite o cree el archivo ~ / .ssh / config y coloque lo siguiente:

    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 todo está configurado correctamente, debería poder ejecutar ssh github.com y ver

      

    ¡Hola, usuario! Te has autenticado correctamente, pero GitHub no proporciona acceso de shell.
      Conexión a github.com cerrada.

    Si esto no funciona, puede ejecutar ssh ssh.github.com y obtener exactamente lo mismo. Si el primer comando no funcionó, significa que está utilizando un proxy que bloquea CONNECT en el puerto 22. Casi ningún proxy bloquea CONNECT en el puerto 443 porque lo necesita para SSL.

Windows

  1. Descargar msysgit . Algunas configuraciones:
    • "Ejecutar Git desde el símbolo del sistema de Windows"
    • "Use OpenSSH" (este es muy importante)
    • Elija los finales de línea
  2. Descargar connect.c . Esta herramienta merece su propia publicación principalmente debido a su total simplicidad. Refleja el sacacorchos de la herramienta de código abierto y se utiliza para hacer túneles a través de servidores proxy. Sí, el nombre de la herramienta se llama realmente "connect.c". Para los usuarios de Windows, hay un binario precompilado disponible. Puse mi connect.exe en C: \ Windows \ connect.exe .
  3. Decide si quieres usar el cmd.exe de Windows para hacer cosas o el shell de estilo Cygwin. O ambos.
  4. Configure el shell Cygwin Git bash.

    Para el shell de estilo Cygwin, inicie el icono de Git y edite el archivo ~ / .ssh / config y asegúrese de que el archivo no tenga extensión. Ponga lo siguiente en ese archivo y observe cómo se especifican las rutas.

    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. Configure el shell de Windows cmd.exe .

    Suponga que no le gusta el caparazón de Git Bash. Prefiere el intérprete cmd.exe.

    • Vaya a su archivo de configuración en C: \ Documents and Settings \ .ssh \ config
    • Haga una copia o haga una nueva. Llamé a la mía config-windows

    Ponga lo siguiente en el archivo, nuevamente prestando especial atención a los separadores y estilos de ruta.

    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
    

Para más detalles, consulte el blog completo publicar .

Otros consejos

[Dado que mi adición a la primera respuesta dada anteriormente no fue aprobada en cuatro días, la puse aquí.]

Tenga en cuenta que sacacorchos y connect , así como el comando estándar de Unix nc solo admiten autenticación básica (que transmite la contraseña de forma insegura).
tunnel-auth versión 0.04 además admite autenticación de resumen .

En caso de que su proxy requiera autenticación NTLM, todos estos comandos se pueden combinar muy bien con cntlm como sigue:

Elija un puerto local (por ejemplo, 8080 como en los ejemplos a continuación) en el que escuchará cntlm (realizar la autenticación del usuario con el proxy y reenviar cualquier paquetes adicionales hacia / desde el proxy), configure el puerto, etc. (por ejemplo, en /etc/cntlm.conf ), y use en lugar del ProxyCommand indicado anteriormente (con el número de puerto correspondiente insertado):

  

Sacacorchos 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

Mi escenario era un poco diferente al de Jeff Tchang (pero basado en su publicación) pero podría ser útil aquí.

Todo nuestro acceso a Internet en el lugar de trabajo / corporativo se realiza a través de un proxy sin autenticación. Pude clonar de pero no presionar a github: running

git push -u origin master

volvería

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

Basado en http: //returnbooleantrue.blogspot. com / 2009/06 / using-github-through-draconian-proxies.html y http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x y http://www.mtu.net/~engstrom/ssh-proxy.php pude descargar / install corkscrew y agrega lo siguiente a mi ~ / .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 

Algunos puntos a tener en cuenta:

  • Utilizo mi clave privada de lugar de trabajo / empresa también con GitHub: si no lo hace, deberá agregar un " IdentityFile " línea

  • A diferencia de Jeff Tchang (y gracias a mtu.net) no necesitaba tener el " ~ / .ssh / myauth " al final de la línea ProxyCommand

  • No necesitaba configurar una sección de host ssh.github.com.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top