문제

다음과 같은 제약 조건이 있는 경우 Windows 및 Unix에서 GitHub를 어떻게 사용할 수 있습니까?

  • 인터넷에 대한 모든 액세스는 프록시로 제한됩니다.
  • 프록시는 포트 80 및 443에서만 연결을 허용합니다.
  • CONNECT 메소드는 443에만 활성화됩니다.
  • 프록시 인증이 필요합니다(NTLM 또는 기본).
도움이 되었습니까?

해결책

참조 "Draconian 프록시(Windows 및 Unix)를 통해 Github 사용" 작성자: Jeff Tchang(이전에는 다음에서 사용 가능) 다른 위치)에는 Windows 및 Unix 플랫폼에 대한 지침이 아래에 요약되어 있습니다.

유닉스

  1. Git을 다운로드하세요.
  2. 다운로드 및 설치 빙빙 돌리다.
  3. 파일 편집 또는 만들기 ~/.ssh/config 그리고 다음을 입력하세요:

    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. 모든 것이 올바르게 설정되면 실행할 수 있습니다 ssh github.com 그리고 봐라

    안녕하세요 사용자입니다!성공적으로 인증되었지만 GitHub는 셸 액세스를 제공하지 않습니다.
    github.com에 대한 연결이 종료되었습니다.

    이것이 작동하지 않으면 실행할 수 있습니다 ssh ssh.github.com 그리고 똑같은 것을 얻으세요.첫 번째 명령이 작동하지 않으면 포트 22에서 CONNECT를 차단하는 프록시를 사용하고 있음을 의미합니다.SSL에 필요하기 때문에 포트 443에서 CONNECT를 차단하는 프록시는 거의 없습니다.

윈도우

  1. 다운로드 msysgit.일부 설정:
    • “Windows 명령 프롬프트에서 Git 실행”
    • “OpenSSH 사용”(이것은 매우 중요합니다)
    • 줄 끝을 선택하세요
  2. 다운로드 연결.c.이 도구는 매우 단순하기 때문에 따로 게시할 가치가 있습니다.이는 오픈 소스 도구 코르크 따개를 미러링하며 프록시를 통한 터널링에 사용됩니다.예,이 도구 이름은 실제로 "Connect.c"라고합니다. Windows 사용자의 경우 사전 컴파일 된 바이너리를 사용할 수 있습니다.나는 내 connect.exe ~에 C:\Windows\connect.exe.
  3. Windows를 사용할지 여부를 결정하십시오. cmd.exe 작업을 수행하거나 Cygwin 스타일 쉘을 사용합니다.아니면 둘다.
  4. Cygwin Git bash 셸을 설정합니다.

    Cygwin 스타일 셸의 경우 Git 아이콘을 시작하고 파일을 편집합니다. ~/.ssh/config 파일에 확장자가 없는지 확인하십시오.해당 파일에 다음을 넣고 경로가 어떻게 지정되는지 확인하십시오.

    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. Windows 설정 cmd.exe 껍데기.

    Git Bash 쉘이 마음에 들지 않는다고 가정해 보겠습니다.cmd.exe 인터프리터를 선호합니다.

    • 구성 파일로 이동하십시오. C:\Documents and Settings\.ssh\config
    • 복사본을 만들거나 새로 만드세요.나한테 전화했어 config-windows

    파일에 다음을 입력하고 경로 구분 기호와 스타일에 다시 한 번 주의를 기울이세요.

    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
    

자세한 내용은 다음을 참조하세요. 전체 블로그 게시물.

다른 팁

[위에 제공된 첫 번째 답변에 추가한 내용이 4일 이내에 승인되지 않아 여기에 게시합니다.]

참고하세요 corkscrew 그리고 connect, 표준 Unix 명령 nc 기본 인증(비밀번호를 안전하지 않게 전송하는)만 지원합니다.
tunnel-auth 버전 0.04 또한 다이제스트 인증을 지원합니다.

프록시에 NTLM 인증이 필요한 경우 이러한 모든 명령은 다음과 매우 잘 결합될 수 있습니다. cntlm 다음과 같이:

로컬 포트(예: 아래 예와 같이 8080)를 선택합니다. cntlm 경청 (프록시로 사용자 인증을 수행하고 더 이상 패키지를 프록시로/전달), 포트 등을 설정합니다.(예를 들어,/etc/cntlm.conf) 위에 제공된 ProxyCommand 대신 사용합니다(해당 포트 번호가 삽입됨).

ProxyCommand 코르크 따개 127.0.0.1 8080 %h %p

또는

ProxyCommand 연결 -H 127.0.0.1:8080 %h %p

또는

ProxyCommand nc -X 연결 -x 127.0.0.1:8080 %h %p

또는

ProxyCommand 터널 인증 -p 127.0.0.1:8080 -r %h:%p

내 시나리오는 Jeff Tchang과 약간 달랐지만 (그의 게시물을 기반으로) 여기에서 도움이 될 수 있습니다.

우리의 모든 직장/회사 인터넷 액세스는 비 승인 대리를 통해 이루어집니다. 나는 복제 할 수 있었다 ~에서 그러나 푸시는 아닙니다 에게 github : 달리기

git push -u origin master

돌아올 것입니다

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

기반 http://returnbooleantrue.blogspot.com/2009/06/using-github-through-draconian-proxies.html 그리고 http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x 그리고 http://www.mtu.net/~engstrom/ssh-proxy.php Corkscrew를 다운로드/설치하고 ~/.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 

주목할만한 점 :

  • 나는 내 직장/기업 개인 키를 GitHub와 함께 사용합니다. 그렇지 않은 경우 "IdentityFile"라인을 추가해야합니다.

  • Jeff Tchang (및 mtu.net 덕분에)과 달리 ProxyCommand 라인 끝에 "~/.ssh/myauth"가 필요하지 않았습니다.

  • ssh.github.com 호스트 섹션을 설정할 필요가 없었습니다.

이 도움을 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top