2009-11-13 7 views
10

http 프록시 액세스 만 허용하는 회사 방화벽 뒤에있는 개인용 (ssh) 개인 저장소에 액세스 (복제/푸시/풀)하고 싶습니다. 필자는 로컬 및 원격 포트 포워딩을 활용할 수있는 강력한 Java (데몬) 프로그램 (JSCh 클래스 라이브러리 기반)을 작성했으며이 기능을 활용하기를 바라고 있습니다. 그러나이를 설정하는 방법을 생각할 때 두뇌가 상처를받습니다. .방화벽 뒤에서 ssh를 통해 git 저장소에 액세스

망할 놈의 repo 저장소 (문구를 화폐로 주조하는)의 fireall을 무시 복제가 될 것이다 설정, 자연적인 성향 때문에 foo.server.com/var/git에 있습니다 :

$ git clone ssh://foo.server.com/var/git/myrepo.git 

하지만, 방화벽은이 명령을 차단합니다. 내가

$ git clone ssh://localhost:8022/var/git/myrepo.git 

같은 것을 시도하는 경향이있어 로컬 호스트

: 8022 그래서이 경로가 추구하는 가치가 foo.server.com:22

로 전달됩니다? 아직 안전한 솔루션이 있습니까? 내가 알아야 할 함정이나 잡기가 있습니까?

답변

5

정상적인 ssh (명령 줄) 세션을 진행할 수 있습니까? 그렇다면, 자식도 작동해야합니다.

ssh를 사용할 때 git은 .ssh/config에서 구성 옵션을 선택해야합니다. 충분하지 않다면, 환경 변수 GIT_SSH가 ssh (또는 쉘 스크립트 래퍼)의 수정 된 버전을 가리킬 수 있습니다. socat이 같은 .ssh/config를 사용

+2

아니요. 그렇게하는 것이 그렇게 어렵습니다. 방화벽을 통해 http 만 허용됩니다. 정상적인 ssh 명령을 작동시키는 데 사용할 수있는 SSH 구성 해킹이 있지만 이러한 명령이 git 명령에 도움이되지 않는다고 생각합니다. 나는 내가 틀렸다는 이야기를 듣고 싶습니다. 그리고 일할 때 이것을 시도 할 것입니다. – pajato0

+0

제 대답이 업데이트되었습니다. SSH 구성 해킹은 git을 통해 작동해야합니다. – Thilo

+0

사실 SSH를 통해 fetch/push 할 때 git은 단순히'git-upload-pack' /'git-receive-pack'을 호출합니다 ('ssh git.example.com "git-upload-pack '/project.git ''). git-fetch/git-push에 적절한 옵션을 사용하여 git-upload-pack 또는 git-receive-pack을 찾을 위치를 지정할 수 있습니다. –

22

:

Host=foo.server.com 
ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd 

당신은 ssh

git clone ssh://foo.server.com/var/git/myrepo.git 

foo.server.com에와

이 일 것으로 예상 할 수 있어야한다.

+2

좋은 점은이 성가신 문제에 대한 최종 해결책입니다. 굉장해! [이것에 관한 작은 게시물] (http://albertgroothedde.com/post/2017-04-fix-ssh-and-git-clone-behind-proxy-on-macos/) – Highmastdon

+0

감사합니다. Gregor, 솔루션이 작동했습니다! 프록시는 대처할 수있는 고통입니다. 어떤 도움을 주셔서 감사합니다! – Anand

관련 문제