문제
다음과 같은 제약 조건이 있는 경우 Windows 및 Unix에서 GitHub를 어떻게 사용할 수 있습니까?
- 인터넷에 대한 모든 액세스는 프록시로 제한됩니다.
- 프록시는 포트 80 및 443에서만 연결을 허용합니다.
- CONNECT 메소드는 443에만 활성화됩니다.
- 프록시 인증이 필요합니다(NTLM 또는 기본).
해결책
참조 "Draconian 프록시(Windows 및 Unix)를 통해 Github 사용" 작성자: Jeff Tchang(이전에는 다음에서 사용 가능) 다른 위치)에는 Windows 및 Unix 플랫폼에 대한 지침이 아래에 요약되어 있습니다.
유닉스
- Git을 다운로드하세요.
- 다운로드 및 설치 빙빙 돌리다.
파일 편집 또는 만들기
~/.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
모든 것이 올바르게 설정되면 실행할 수 있습니다
ssh github.com
그리고 봐라안녕하세요 사용자입니다!성공적으로 인증되었지만 GitHub는 셸 액세스를 제공하지 않습니다.
github.com에 대한 연결이 종료되었습니다.이것이 작동하지 않으면 실행할 수 있습니다
ssh ssh.github.com
그리고 똑같은 것을 얻으세요.첫 번째 명령이 작동하지 않으면 포트 22에서 CONNECT를 차단하는 프록시를 사용하고 있음을 의미합니다.SSL에 필요하기 때문에 포트 443에서 CONNECT를 차단하는 프록시는 거의 없습니다.
윈도우
- 다운로드 msysgit.일부 설정:
- “Windows 명령 프롬프트에서 Git 실행”
- “OpenSSH 사용”(이것은 매우 중요합니다)
- 줄 끝을 선택하세요
- 다운로드 연결.c.이 도구는 매우 단순하기 때문에 따로 게시할 가치가 있습니다.이는 오픈 소스 도구 코르크 따개를 미러링하며 프록시를 통한 터널링에 사용됩니다.예,이 도구 이름은 실제로 "Connect.c"라고합니다. Windows 사용자의 경우 사전 컴파일 된 바이너리를 사용할 수 있습니다.나는 내
connect.exe
~에C:\Windows\connect.exe
. - Windows를 사용할지 여부를 결정하십시오.
cmd.exe
작업을 수행하거나 Cygwin 스타일 쉘을 사용합니다.아니면 둘다. 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
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 호스트 섹션을 설정할 필요가 없었습니다.
이 도움을 바랍니다.