[github] 프록시 뒤의 GitHub Windows 클라이언트

Windows 용 GitHub 클라이언트를 작동 시키려고합니다. 회사 프록시 및 방화벽 뒤에있는 회사 Win 7 x64 컴퓨터에 있습니다. 다양한 다른 게시물에 따라 환경 변수 및 구성 변수의 여러 조합을 실험하면서 복제 및 푸시 업데이트를 작동하는 유일한 방법은 전체 회사 도메인 사용자 ID 및 암호를 포함하여 HTTPS_PROXY 환경 변수를 사용하는 것입니다.

이것은 보안 관점에서 받아 들일 수 없습니다. 이 작업을 수행하는 다른 방법이 있습니까?

추가 참고 사항 :

다음은 작동했습니다.

  • HTTPS_PROXY값으로 호출 된 환경 변수 추가http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

다음은 작동 하지 않았습니다 .

  • HTTPS_PROXY변수 에서 사용자 ID 및 비밀번호 생략
  • HTTP_PROXY(no S) 라는 환경 변수 사용
  • http.proxy전역 구성 파일 ( .gitconfig)에 변수 추가
  • https.proxy전역 구성 파일에 변수 추가

모든 경우에 GitHub 클라이언트는 여전히 프록시를 인식하지 못합니다. 파일 내용은 시작시 TheLog.txt 항상 다음을 표시합니다.

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

그 다음에는 여러 번의 실패한 프록시 인증 시도의 출력이 표시되며 모두 “자격 증명이 없습니다”를 나타냅니다.



답변

다음 항목을 사용자 디렉터리의 ‘.gitconfig’파일에 추가합니다 (% USERPROFILE %로 이동).

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

암호를 일반 텍스트로 저장하지 않으려면 CNTLM과 같은 로컬 프록시 전달자를 사용하여 모든 트래픽을 전달하고 해시 된 암호를 저장할 수 있습니다.


원래 질문과 달리 암호가 일반 텍스트인지 상관하지 않으면 다음을 추가하십시오.

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>


답변

위의 모든 것을 시도했지만 성공하지 못했습니다 . 나를 도운 유일한 것은 CNTLM- http: //cntlm.sourceforge.net/ 입니다.

설치하고 cntlm -H를 실행하고, corp 프록시에 인증하는 것보다 cntlm의 출력으로 cntlm.ini 파일을 편집하고 Windows 서비스를 다시 시작하십시오. .gitconfig를 다음으로 업데이트하십시오.

[https] proxy = localhost:3128
[http] proxy = localhost:3128

이제 cntlm이 모든 인증을 수행하고 corp 프록시 뒤에서 GitHub (및 Dropbox, btw)를 사용할 수 있습니다. 적어도 다음 암호 변경까지 🙂 (다시 cntlm -H 물건보다)


답변

회사 프록시와 함께 작동하도록 GitHub Shell을 만들 수있었습니다. GitHub Shell을 시작하고 다음 명령을 실행합니다.

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

GUI도 작동하도록 만들고 싶습니다. 하지만 회사 자격 증명 정보가 포함 된 Windows 전역 환경 변수를 설정하고 싶지 않습니다.

이상하게도 GitHub GUI 클라이언트는 사용자 인증을 위해 GitHub에 연결할 수 있지만 문제는 GitHub에서 프로젝트를 복제, 가져 오기 및 푸시하는 것입니다. 문제는 git 구현에있는 것 같습니다. 내 자격 증명을 git 전역 설정에 넣지 않고 프록시를 통해 실행되도록 git을 구성 할 수 있었고 pull 또는 push 요청을 수행하는 동안 자격 증명을 요청했습니다. 그러나 그것은 Git Shell에서만 작동했습니다.


답변

기업에서 Windows 용 GitHub를 사용하는 경우, 회사 방화벽 / 프록시가 심각 할 가능성이 높습니다. Windows 용 GitHub에는 옵션 설정을위한 GUI에 아직 프록시 매개 변수가 없습니다.

회사 프록시를 사용하도록 Windows 용 GitHub를 구성하려면 일반적으로 C : \ Users \ .gitconfig 또는 C : \ Documents & Settings \ .gitconfig에있는 .gitconfig 파일을 편집합니다.

Windows 용 GitHub를 닫습니다. .gitconfig에서 다음을 추가하십시오.

[https] 프록시 = proxy.yourcompany.com:port


답변

나는 또한이 문제에 부딪 쳤고 그것에 대해 조금 파고 들었다 (클라이언트 분해).

우리가보고있는 로그 메시지를 생성하는 코드는 다음과 같습니다.

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

따라서이 블록 은 IE 에서 설정된 프록시 정보 만 기록합니다 . 로그 메시지는 구성 파일이나 환경 변수에서 설정 한 내용과 관련이없는 것으로 보입니다.


답변

방화벽에 대해 잘 모르지만 내 캠퍼스는 프록시를 사용합니다.

git gui를 사용합니까? 편집 : 방금 Windows 용 github 클라이언트를 사용하고 있음을 알았습니다.

나는 tortoisegit을 사용하고 있으며 프록시를 설정하는 것은 매우 쉽습니다. 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고, tortoisegit> network, 프록시 서버를 활성화하고 서버 주소, 사용자 이름 및 비밀번호를 설정하십시오. 끝난

내가 기억하는 한 tortoisegit은 github와 함께 즉시 작동합니다.


답변

다음은 github에서 프록시를 설정하는 방법입니다.

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

여기 우리 대학에는 사용자 이름과 암호가 없으므로 대학 IP가 172.16.10.10이고 포트가 8080이면

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

추신 – 일을 당신이 더 배울 것 같은 장소에 빠질 것 같은> 내가 설정 한 프록시에이 방법을 사용하는 것이 좋습니다
소스