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
'programing' 카테고리의 다른 글
nodejs로 MongoDB 쿼리 결과를 스트리밍하는 방법은 무엇입니까? (0) | 2023.07.20 |
---|---|
ORA-02303: 형식을 삭제하거나 형식 또는 테이블 종속자로 대체할 수 없습니다. (0) | 2023.07.20 |
스프링 부트에서 CORS를 활성화하는 방법 - 작동하지 않음 (0) | 2023.07.20 |
Truthy와 Falsy는 무엇입니까?참 및 거짓과 어떻게 다릅니까? (0) | 2023.07.20 |
null이 아닌 필드 'new_field'를 기본값 없이 사용자 프로파일에 추가하려고 합니다. (0) | 2023.07.20 |