카테고리 보관물: Git

Git

Git Remote : 오류 : 치명적 : 프로토콜 오류 : 잘못된 줄 길이 문자 : Unab

git 서버를 설정하고 이제 클라이언트에서 처음에 내 저장소를 푸시하고 싶습니다. git push origin master이 오류 메시지를 사용 하고 나타납니다.

fatal: protocol error: bad line length character: Unab

나는 무엇이 잘못되었는지 모른다. “Unab”이 무엇인지 모르겠습니다. 셸 크기를 조정하려고했지만 여전히 “Unab”입니다. 이 오류 메시지에 대한 해결책을 찾을 수 없습니다.

“authorized_keys”와 SSH로 서버를 설정했습니다. (SSH를 사용하여 연결할 수 있습니다.)

자식 문제인 것 같습니까?

BTW : 서버가 Windows 7 VM에 설정되어 있습니다.



답변

이 오류 메시지는 약간 둔감하지만 실제로 원격 서버가 적절한 git 응답으로 응답하지 않았다는 것을 알려줍니다. 궁극적으로 git-receive-pack프로세스를 실행하는 서버에 문제가있었습니다 .

Git 프로토콜에서 처음 4 바이트는 줄 길이 여야합니다. 대신, 그들은 문자였습니다 Unab… 아마도 일종의 오류 메시지의 시작일 것입니다. (즉, ” Unable to...“일 가능성이 있습니다.)

달리면 어떻게 ssh <host> git-receive-pack <path-to-git-repository>되나요? git 클라이언트가 실행 중이라는 오류 메시지가 나타나고이를 수정할 수 있습니다.


답변

비슷한 문제가 있었지만 정확한 오류 메시지는 다음과 같습니다.

치명적 : 프로토콜 오류 : 잘못된 줄 길이 문자 : Usin

이것은 Windows에 있으며 PuTTY GIT_SSH의 경로 로 설정됩니다 plink.exe.

가능한 문제 및 해결책 :

  • 경로 plink.exe가 올바른지 확인하십시오 . 예를 들어 유닉스 스타일 경로도 잘 작동합니다./c/work/tools/PuTTY/plink.exe
  • PuTTY ( pageant.exe) 의 키 에이전트 가 실행 중인지 확인
  • 키 에이전트에 서버에 액세스하기위한 유효한 키가 포함되어 있는지 확인하십시오.

답변

GitExtension 사용자의 경우 :

git을 2.19.0으로 업그레이드 한 후에도 동일한 문제가 발생했습니다.

해결책:

도구> 설정> Git 확장> SSH

[ PuTTY ] 대신 [ OpenSSH ]를 선택하십시오 .


답변

Windows에 GIT를 설치 한 후에도 같은 종류의 문제가 발생했습니다. 처음에는 효과가있었습니다. 그런 다음 하루 후 (PC 재부팅 후) 더 이상 작동하지 않았고 다음과 같은 결과를 얻었습니다.

$ git pull
fatal: protocol error: bad line length character: git@

문제는 재부팅 후 자동으로 시작된 Putty “pageant.exe”가 더 이상 개인 키를 활성화하지 않았다는 것입니다. Pageant에 키를 추가하면 기본적으로 영구 설정이 아닙니다. 키를 다시 추가해야했는데 제대로 작동했습니다. 따라서이 경우 여기에 설명 된대로 pagenant가 키를 자동으로로드하도록해야합니다.

https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty


답변

출력을 생성하는 서버의 .bashrc에 명령문이있을 수 있습니다. 예를 들어 다음과 같습니다.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
rvm use ruby-1.9.3-p194@rails32

이 경우 rvm 사용의 출력은 git에서 오는 것으로 (잘못) 해석됩니다. 따라서 다음으로 교체하십시오.

rvm use ruby-1.9.3-p194@rails32 > /dev/null

답변

Git Extensions에서 SSH 개인 키를로드하면이 문제가 해결됩니다.


답변

모든 출력을 .bashrc에서 stderr다음으로 리디렉션 할 수 있습니다 .

# inside .bashrc
echo 'some error/warning/remind message' 1>&2

자식은이 기호를 무시합니다