Pergunta

Dadas as seguintes restrições, como eu posso usar GitHub a partir do Windows e Unix?

  • Todo o acesso à internet é restrito a um proxy
  • O proxy só permite conexões de fora na porta 80 e 443
  • método CONNECT só é habilitado para 443
  • Autenticação de proxy é necessária (NTLM ou Basic)
Foi útil?

Solução

Veja uma “Usando Github Através Draconian Proxies (Windows e UNIX)” por Jeff Tchang (anteriormente disponível a partir de outro local ), que inclui instruções para ambas as plataformas Windows e Unix, resumidos a seguir.

Unix

  1. Baixar Git.
  2. Baixe e instale saca-rolhas .
  3. Editar ou criar o ~/.ssh/config arquivo e coloque o seguinte:

    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 tudo estiver configurado corretamente, você deve ser capaz de executar ssh github.com e veja

    user Hi! Você autenticado com êxito, mas não GitHub não fornece acesso shell.
    Conexão com github.com fechada.

    Se isto não funcionar, você pode executar ssh ssh.github.com e obter exatamente a mesma coisa. Se o primeiro comando não funcionou significa que você está usando um proxy que bloqueia CONNECT na porta 22. Quase sem proxies bloquear CONNECT na porta 443 porque você precisa disso para SSL.

Windows

  1. msysgit . Algumas definições:
    • “Run Git do comando do Windows Prompt”
    • “Use OpenSSH” (este é muito importante)
    • Escolha o seu final de linha
  2. connect.c . Esta ferramenta merece o seu próprio posto principalmente por causa de sua extrema simplicidade. Ele reflete o saca-rolhas ferramenta de código aberto e é usado para tunelamento através de proxies. Sim o nome da ferramenta é realmente chamado “connect.c.” Para usuários do Windows, um binário pré-compilado está disponível. Eu coloquei minha connect.exe em C:\Windows\connect.exe.
  3. Decida se você gosta de usar o cmd.exe Windows para fazer coisas ou o shell estilo Cygwin. Ou ambos.
  4. configurar o shell bash Cygwin Git.

    Para o shell estilo Cygwin iniciar-se o ícone Git e editar o ~/.ssh/config arquivo e verifique se o arquivo não tem extensão. Coloque o seguinte no arquivo, e observe como os caminhos são especificados.

    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. configurar o shell cmd.exe do Windows.

    Suponha que você não faz como o shell Git Bash. Você prefere o intérprete cmd.exe.

    • Vá para o seu arquivo de configuração no C:\Documents and Settings\.ssh\config
    • Faça uma cópia do mesmo ou fazer um novo. Eu chamei o meu config-windows

    Coloque o seguinte no arquivo, novamente prestando muita atenção separadores e estilos de caminho.

    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 mais detalhes, consulte o blog completo pós .

Outras dicas

[Desde a minha além de a primeira resposta dada acima não obter aprovação dentro de quatro dias, eu colocá-lo aqui.]

Note que corkscrew e connect, bem como o comando nc Unix padrão suportam apenas a autenticação básica (que insegura transmite a senha).
versão tunnel-auth 0,04 em suportes de adição de autenticação Digest.

No caso do seu proxy requer autenticação NTLM, todos estes comandos podem ser combinados muito bem com cntlm da seguinte forma:

Escolha uma porta local (por exemplo, 8080, como nos exemplos abaixo) em que cntlm vai ouvir (Realizando a autenticação do utilizador com o proxy e encaminhar qualquer mais pacotes de / para o proxy), definir a porta, etc. (por exemplo, em /etc/cntlm.conf), e da utilização, em vez do ProxyCommand dado acima (com o respectivo número de porta inserido):

ProxyCommand saca-rolhas 127.0.0.1 8080% h% p

ou

ProxyCommand connect -H 127.0.0.1:8080% h% p

ou

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

ou

ProxyCommand túnel-auth -p 127.0.0.1:8080 -r% h:% p

Meu cenário foi um pouco diferente para Jeff Tchang do (mas baseado em seu post), mas pode ser útil aqui.

Todo o nosso acesso à Internet no local de trabalho / corporativa é através de um proxy não-autenticação. Eu era capaz de clone de , mas não empurrar para github: correr

git push -u origin master

voltaria

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

Com base http: //returnbooleantrue.blogspot. com / 2009/06 / utilizando-github-through-draconiana-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 eu era capaz de baixar / instalar o saca-rolhas e adicione o seguinte ao meu ~ / .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 

Alguns pontos a nota:

  • Eu uso o meu local de trabalho chave / corporativo privado também com GitHub: se você não você vai precisar adicionar uma linha "IdentityFile"

  • Ao contrário com Jeff Tchang (e graças a mtu.net) Eu não precisam ter o "~ / .ssh / MyAuth" no final da linha ProxyCommand

  • Eu não preciso configurar uma seção ssh.github.com anfitrião.

Hope estes ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top