programing

git://protocol이 회사에 의해 차단되었습니다. 어떻게 하면 피할 수 있을까요?

i4 2023. 7. 20. 21:42
반응형

git://protocol이 회사에 의해 차단되었습니다. 어떻게 하면 피할 수 있을까요?

시도하는 것과 같은 것.git clone git://github.com/ry/node.git작동하지 않을 경우 다음과 같은 결과가 발생합니다.

Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

그러나 HTTP를 통한 복제는 정상적으로 작동합니다.지금까지 프로토콜에 문제가 있다고 생각했는데 명령어가 필요한 cloud9을 설치하려고 합니다.

git submodule update --init --recursive

git:// 프로토콜을 사용하려고 시도하다가 실패했습니다.그 명령어가 어떻게 작동하는지 바꿀 방법이 있습니까?

방화벽이 git: protocol port(9418)를 차단하는 데 문제가 있다면 모든 git repo에 대해 다른 게시물에서 제안한 명령을 실행하는 것을 잊지 않도록 보다 지속적으로 변경해야 합니다.

아래 솔루션은 git: protocol을 사용할 수도 있는 하위 모듈에서도 작동합니다.

Git 메시지가 방화벽 차단 포트 9418을 바로 가리키지는 않으므로 이 문제를 실제 문제로 진단해 보겠습니다.

문제 진단

참조 자료: https://superuser.com/q/621870/203918 및 https://unix.stackexchange.com/q/11756/57414

방화벽이 문제의 원인인지 확인하는 데 사용할 수 있는 몇 가지 도구가 있습니다. 시스템에 설치된 도구를 사용하십시오.

# Using nmap
# A state of "filtered" against port 9418 (git) means
#   that traffic is being filtered by a firewall
$ nmap github.com -p http,git

Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT     STATE    SERVICE
80/tcp   open     http
9418/tcp filtered git

# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1

# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl  http://github.com:9418
curl: (7) couldn't connect to host

좋아요, 이제 우리는 그것이 방화벽에 의해 차단되는 우리의 깃 포트라는 것을 확인했습니다. 우리는 그것에 대해 무엇을 할 수 있을까요?계속 읽어보세요 :)

기본 URL 다시 쓰기

Git는 다음 명령을 사용하여 URL을 다시 작성하는 방법을 제공합니다.

git config --global url."https://".insteadOf git://

이제 마법에 걸린 것처럼 모든 git 명령이 다음을 대체합니다.git://https://

이 명령의 변경 내용

다음을 사용하여 글로벌 구성을 살펴보십시오.

git config --list

출력에 다음 행이 표시됩니다.

url.https://.insteadof=git://

파일에서 이 파일이 어떻게 표시되는지 확인할 수 있습니다.~/.gitconfig이제 다음 두 줄이 추가되었음을 확인할 수 있습니다.

[url "https://"]
    insteadOf = git://

더 많은 통제력을 원하십니까?

교체할 때 보다 완전하고 구체적인 URL을 사용하기만 하면 됩니다.예를 들어 GitHub URL만 git:// 대신 https://를 사용하도록 하려면 다음과 같은 방법을 사용할 수 있습니다.

git config --global url."https://github".insteadOf git://github

이 명령은 서로 다른 대체 명령을 사용하여 여러 번 실행할 수 있습니다.그러나 URL이 여러 개의 대체 항목과 일치하는 경우 가장 긴 일치 항목이 "승"합니다.URL당 하나의 교체만 수행됩니다.

시스템 관리자에 대한 시스템 전체 변경 사항

Linux 시스템 관리자인 사용자가 위와 같은 문제를 겪지 않으려면 시스템 전체의 Git 구성을 빠르게 변경할 수 있습니다.

다음 내용을 편집하거나 추가하기만 하면 됩니다./etc/gitconfig그리고 voila 사용자는 위의 사항에 대해 걱정할 필요가 없습니다.

[url "https://"]
    insteadOf = git://

Github은 회사에서 차단될 가능성이 훨씬 적은 http 액세스도 제공합니다.서브모듈에 이 기능을 사용하도록 지시하려면 다음을 수행합니다.

git submodule init
git config submodule.<name>.url https://github.com/...
git submodule update

이것이 실제로 init와 update가 별개의 명령인 이유입니다. 즉, init를 시작하고 위치를 사용자 정의한 다음 업데이트할 수 있습니다.update --init는 URL을 사용자 지정할 필요가 없는 경우의 바로 가기입니다.

이런 일이 발생하는 다른 사람들도 물론 ssh URL을 사용할 수 있지만(회사에서 git://을 차단하지만 ssh는 차단하지 않는 경우), 이 경우 OP는 원격 repo에 대한 SSH 액세스 권한이 없을 것입니다.

터치하지 않는 다른 옵션git config는 HTTPS를 통한 SSH 연결을 사용하도록 설정하는 것입니다. SSH 연결에 일반 SSH 포트 22 대신 HTTPS 포트 443을 사용하도록 SSH 설정을 변경하여 이를 수행할 수 있습니다.

HTTPS 포트를 통한 SSH 사용에 대한 GitHub의 기사에서:

~/.vmdk/config에서 파일을 편집하고 다음 섹션을 추가합니다.

Host github.com
   Hostname ssh.github.com
   Port 443  

이 변화 이후, 저는 성공적으로git push깃허브로.

집에 돌아가면 이 SSH 구성 변경을 제거하여 기본 설정으로 되돌릴 수 있습니다.

저도 한동안 같은 문제를 겪고 있었습니다.그런 다음 제안된 명령을 사용하여 Git 구성을 변경해 보았습니다.

git config --global url."https://".insteadOf git://

불행하게도 제게 도움이 되지 않았습니다.저는 여전히 같은 문제를 겪고 있었습니다!

마지막으로 문제를 해결한 것은 다음 명령을 사용하여 저장소의 원격 URL을 다시 설정했다는 것입니다.

git remote set-url origin https://github.com/<my_user_name>/<my_repo_name>.git

이전에는 다음과 같았습니다.

git remote set-url origin git@github.com:<my_user_name>/<my_repo_name>.git

다음을 사용하여 원격 URL을 설정한 후https://대신에git@git.com그 문제는 나를 위해 해결되었습니다.

위 Nathan의 답변을 확장하면 회사 방화벽이 https를 방해하는 경우에도 ssh 프로토콜을 사용할 수 있습니다.제 경우 방화벽이 git 프로토콜을 차단하고 https에 대한 ssl 인증서를 재발급했으며 strict-ssl 옵션이 꺼져 있는 상태에서도 이는 저에게 샤워를 중단하는 것이었습니다.ssh에 대해 유사한 URL을 다시 쓰고 github에 설명된 대로 ssh 키/을 생성할 수 있습니다.

 git config --global url."ssh://git@github.com".insteadOf git://github.com

또한 git 설치를 위해 ssh-agent를 켜야 합니다.

노드 서버의 GIT 주소가 변경되었기 때문에 지금 입력해야 합니다.

git clone https://github.com/joyent/node

행운을 빌어요

언급URL : https://stackoverflow.com/questions/4891527/git-protocol-blocked-by-company-how-can-i-get-around-that

반응형