Skonfigurowałem serwer git i chcę teraz najpierw wypchnąć moje repozytorium z klienta. Użyłem git push origin master
i otrzymałem ten komunikat o błędzie:
fatal: protocol error: bad line length character: Unab
Nie wiem co jest źle. Nie wiem, co to jest „Unab”. Próbowałem zmienić rozmiar powłoki, ale nadal jest to „Unab”. Nie mogę znaleźć rozwiązania tego komunikatu o błędzie.
Skonfigurowałem serwer za pomocą „Authorized_keys” i SSH. (Mogę się z nim połączyć, używając SSH.)
Wydaje się, że to problem z gitem?
BTW: serwer jest skonfigurowany na maszynie wirtualnej z systemem Windows 7
git
ssh
authorized-keys
user437899
źródło
źródło
Odpowiedzi:
Ten komunikat o błędzie jest nieco tępy, ale tak naprawdę próbuje ci powiedzieć, że zdalny serwer nie odpowiedział poprawną odpowiedzią git. Ostatecznie wystąpił problem na serwerze z uruchomionym
git-receive-pack
procesem.W protokole Git pierwsze cztery bajty powinny być długością linii. Zamiast tego były to postacie
Unab
... co jest prawdopodobnie początkiem jakiegoś komunikatu o błędzie. (tj. prawdopodobnie "Unable to...
" coś zrób).Co się dzieje, kiedy biegasz
ssh <host> git-receive-pack <path-to-git-repository>
? Powinieneś zobaczyć komunikat o błędzie, który pokazuje twój klient git, i być może będziesz w stanie go poprawić.źródło
ssh <host> /bin/true
nie powinno niczego wyświetlać..bashrc
komputer, na którym znajdowało się repozytorium Git, z którego próbowałem wyciągnąć, miał wiersz, który generował echo na standardowe wyjście. (To znaczy byłem właścicielem repozytorium na zdalnej maszynie, więc to mój.bashrc
problem spowodował). Użyłem sztuczki podanej przez użytkownika ruslo w innej odpowiedzi, a mianowicie przekierowania wyjścia tego polecenia ze stdout na stderr (some_command 1>&2
). Potemgit pull
znowu pracował.0000
i kursor bezpośrednio po nim, tak jakby kolejna linia miała zostać zapisana, ale nigdy się nie kończy.Miałem podobny problem, ale dokładny komunikat o błędzie brzmiał:
To jest w systemie Windows, z
GIT_SSH
ustawioną ścieżkąplink.exe
PuTTY.Możliwe problemy i rozwiązania:
plink.exe
jest poprawna. Na przykład ścieżka w stylu uniksowym również działa dobrze/c/work/tools/PuTTY/plink.exe
pageant.exe
) jest uruchomionyźródło
fatal: protocol error: bad line length character: git@
. Co za mylący komunikat o błędzie.Napotkałem ten sam problem po aktualizacji gita do 2.19.0
Narzędzia> Ustawienia> Rozszerzenia Git> SSH
Wybierz [ OpenSSH ] zamiast [ PuTTY ]
źródło
fatal: protocol error: bad line length character: git@
. Upewnij się, że klucz SSH został wygenerowany i dodany do GitLab . Być może ponowne uruchomienie rozszerzeń Git było konieczne.Miałem ten sam problem po zainstalowaniu GIT w systemie Windows. Na początku to działało; potem, dzień później (po ponownym uruchomieniu komputera), już się nie udało i otrzymałem to:
Problem polegał na tym, że po ponownym uruchomieniu automatycznie uruchamiany program Putty „pageant.exe” nie miał już aktywnego klucza prywatnego. Gdy dodajesz klucz w konkursie, domyślnie nie jest to trwałe ustawienie. Po prostu musiałem ponownie dodać klucz i działało dobrze. W tym przypadku konieczne jest więc automatyczne ładowanie klucza przez stronę, jak omówiono tutaj:
https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty
źródło
Może masz instrukcję w .bashrc serwera, która generuje dane wyjściowe. Ja na przykład miałem to:
W takim przypadku wynik użycia rvm zostanie (błędnie) zinterpretowany jako pochodzący z git. Więc zamień to na:
źródło
Po załadowaniu klucza prywatnego SSH w rozszerzeniach Git ten problem zostanie rozwiązany.
źródło
Możesz przekierować dane wyjściowe z
.bashrc
dostderr
:git zignoruje te symbole
źródło
rvm use 2.0.0-p353
w swoim oświadczeniu.bashrc
, które musiało być zdezorientowanegit pull
. Po dołączeniu1>&2
i ponownej próbiegit pull
działało dobrze.Miałem podobny problem w systemie Windows przy użyciu Git Bash. Ciągle otrzymywałem ten błąd podczas próby wykonania klonu git. Repozytorium znajdowało się na Linux-ie z zainstalowanym GitLabem.
Upewniłem się, że klucz ssh został wygenerowany. Klucz publiczny został dodany na GitLab. Ssh-agent działał, a wygenerowany klucz został dodany ( link do github ).
Skończyły mi się opcje, a następnie w końcu spróbowałem zamknąć Git Bash i otworzyć go ponownie, klikając prawym przyciskiem myszy „Uruchom jako administrator”. Pracowałem potem.
źródło
To może komuś pomóc. Kiedy próbowałem sklonować projekt z instancji EC2, otrzymywałem następujący błąd:
Rozwiązanie dla mnie obejmuje poniższe kroki:
Użyj identyfikatora klucza EC2 SSH jako klucza publicznego dla git clone. Przykład:
git clone ssh: // {SSH Key ID}@someaccount.amazonaws.com/v1/repos/repo1
źródło
plink <server_name> ls
pierwszą rzeczą, którą plink drukuje na stdout, jest tologin as
, że git wydaje się próbować zinterpretować jako coś ważnego. Szybkim rozwiązaniem jest prosteunset GIT_SSH
iunset SVN_SSH
. Więcej informacji tutajset GIT_SSH=
iset SVN_SSH=
Dla mnie to dlatego, że niedawno dodałem
do .ssh / config
skomentowanie tego pozwoliło to zadziałać
źródło
Sprawdź, czy w plikach startowych na koncie używanym do łączenia się ze zdalnym komputerem znajdują się instrukcje „echo”. W przypadku powłoki Bash byłyby to pliki .bashrc i .bash_profile itp. Edward Thomson ma rację w swojej odpowiedzi, ale specyficzny problem, którego doświadczyłem, dotyczy wydruku płyty kotłowej po zalogowaniu się do serwera przez ssh. Git pobierze pierwsze cztery bajty tej płyty kotłowej i zgłosi ten błąd. Teraz w tym konkretnym przypadku zgadnę, że „Unab” jest w rzeczywistości pracą „Unable ...”, co prawdopodobnie oznacza, że na hoście Git jest coś nie tak.
źródło
W moim przypadku po sprowadzić było napisane:
fatal: protocol error: bad line length character: Pass
. Również po naciśnięciu mam:fatal: protocol error: bad line length character: git@ Done
.Po ponownym uruchomieniu Windows musiałem ponownie uruchomić "agenta PuTTY" (pageant.exe) i dodać klucz prywatny, który zniknął z listy kluczy.
źródło
FYI Otrzymałem ten sam komunikat o błędzie po uaktualnieniu kontenera CentOS6 do CentOS7 - niektóre operacje git zaczęły kończyć się niepowodzeniem podczas budowania kontenera, np.
Uruchomienie ssh spowodowało błąd, który mogłem wyszukać:
To doprowadziło mnie do https://github.com/wolfcw/libfaketime/issues/63, gdzie zdałem sobie sprawę, że zapomniałem, że mam
LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
w nadrzędnym pliku Dockerfile. Skomentowanie tego naprawiło błąd.źródło
W moim przypadku problemem był 32-bitowy program Putty i pageant.exe - nie może się on komunikować z 64-bitowym TortoisePlink.exe. Zastąpienie 32-bitowego Putty wersją 64-bitową rozwiązało problem.
źródło
Miałem ten sam błąd, w
"fatal: protocol error: bad line length character: shmi"
którymshmi
w moim przypadku jest nazwa użytkownika. Zmieniłem SSH z PuTTY na OpenSSH w"Git Extensions->Settings->SSH"
. Pomogło.źródło
Miałem ten sam problem co Christer Fernstrom. W moim przypadku była to wiadomość, którą umieściłem w swoim .bashrc, która przypomina mi o zrobieniu kopii zapasowej, gdy nie zrobiłem jej od kilku dni.
źródło
Poniższe mogą komuś pomóc: Podczas próby sklonowania projektu, który mam na mojej instancji AWS EC2, otrzymuję następujący błąd:
Było to spowodowane próbą ssh jako root zamiast EC2-USER. jeśli faktycznie ssh bez wykonania klonu git ... zobaczysz komunikat błędu w czymś w rodzaju „Proszę zaloguj się przez ec2-user”. Kiedy wykonałem klon git jako użytkownik ec2, było dobrze.
źródło
czasami napotykam ten błąd, ale kiedy się pojawia, oznacza to, że mój oddział nie jest aktualny, więc muszę to zrobić
git pull origin <current_branch>
źródło
Git nie pyta o hasło i kończy się niepowodzeniem z podobnym tajemniczym komunikatem „fatal: protocol error: zła długość linii znak: użytkownik”, jeśli nie masz również konfiguracji uwierzytelniania za pomocą klucza prywatnego .
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server mówi, jak określić klucz publiczny na serwerze. Zasadniczo dodaj klucz publiczny do ~ / .ssh / autoryzowane_klucze lub ~ / .ssh / autoryzowane_klucze2
Musiałem trochę się zmagać, jak zapewnić klucz prywatny do Git Bash na komputerze z systemem Windows. Opisuje to odpowiedź Dana McClaina w /server/194567/how-do-i-tell-git-for-windows-where-to-find-my-private-rsa-key/382801#382801 . Jeden dodatek do jego odpowiedzi, w moim przypadku plik klucza prywatnego miał nosić nazwę id_rsa.pub
źródło
Dla mnie dodanie tych samych danych hosta do Putty z kluczem prywatnym (konwersja z puttygen) działało. Wszelkie późniejsze polecenia git bash nie powodowały żadnych problemów.
źródło
Jeśli używasz Putty. Następnie upewnij się, że Pageant jest uruchomiony, a Twój klucz prywatny jest załadowany do programu Pageant (kliknij prawym przyciskiem myszy ikonę Pageant na pasku zadań i kliknij „Wyświetl klucze” w menu, które się pojawi).
W przeciwnym razie, gdy robisz to w cmd.exe:
git clone ssh://name@host:/path/to/git/repo.git
pojawia się ten komunikat „krytyczny: błąd protokołu: zła długość linii:”
źródło
TL; DR: Czy nie pominąć
username@
w swoich zdalnych adresów URL, gdy w systemie Windows.W systemie Linux i Windows z domyślnym ssh możesz pominąć nazwę użytkownika w zdalnych adresach URL, na przykład:
Ponieważ domyślnym zachowaniem ssh jest użycie dowolnej nazwy użytkownika, za pomocą której jesteś zalogowany. Jeśli korzystasz z systemu Windows i skonfigurowałeś git do używania
plink.exe
, abyś mógł używać klucza załadowanego do twojegopageant
, to nie zadziała, ponieważplink
nie ma tego samego automatycznego zachowania nazwy użytkownika, co powoduje te tajemnicze komunikaty o błędach, ponieważ tak będzie monit o podanie nazwy użytkownika:Przeciw:
Jeśli w jakiś sposób sklonowałeś już repozytorium, możesz naprawić piloty w swoim
.git/config
, dodającusername@
do zdalnego adresu URL.źródło
git remote set-url origin myusername@...
Pomogło mi dodanie nazwy użytkownika do pilota .Sprawdź, czy dostęp do powłoki jest dozwolony na serwerze.
źródło
Błąd przekształcony w: fatal: protocol error: zła długość linii znak: fata
po dodaniu lokalizacji git-upload-pack do ścieżki systemowej.
Problem wydaje się być apostrofem dodanym wokół nazwy repozytorium: Wyszukiwanie za pomocą narzędzia takiego jak Process Monitor (z wewnętrznych elementów sys), które zostały dodane przez klienta git. Wydaje się, że jest to problem specyficzny dla systemu Windows w systemie Git.
Wypróbowałem tę samą linię poleceń w wierszu polecenia serwera: pełny błąd brzmiał „fatal: not a danego repozytorium (lub żadnego z katalogów nadrzędnych): .git”
Podsumowując, wydaje mi się, że to błąd oprogramowania. Pamiętaj, że nie jestem ekspertem w dziedzinie git, po raz pierwszy używam gita, pochodzę z wywrotu i z konieczności.
źródło
Na to też wpadliśmy.
Nie znam szczegółowych informacji o tym, co poszło nie tak, ale w naszym przypadku to, co spowodowało, było to, że dysk na serwerze był pełny.
źródło
Może to być dostęp do zabezpieczeń na twoim komputerze, czy używasz programu Pageant (który jest agentem szpachli)?
źródło
zawsze możesz mieć link http do swojego projektu git. Możesz użyć tego zamiast linku ssh. To tylko opcja, którą masz
źródło
Cóż, miałem ten sam problem (Windows 7). Spróbuj uzyskać repozytorium za pomocą hasła. Używam Git Bash + Plink (zmienna środowiskowa GIT_SSH) + Pageant. Pomaga mi usunięcie GIT_SSH (tymczasowe). Nie wiem, dlaczego nie mogę jednocześnie logować się za pomocą hasła i logować się przez RSA ...
źródło
Późna odpowiedź tutaj, ale mam nadzieję, że to komuś pomoże. Jeśli jest to błąd protokołu, musi zrobić coś z lokalnym gitem, który nie jest w stanie komunikować się ze zdalnym gitem. Może się to zdarzyć, jeśli sklonowałeś repozytorium za pomocą ssh, a jakiś czas później zgubiłeś klucze do repozytorium lub agent ssh nie może już ich znaleźć.
Rozwiązanie
Wygeneruj nowy klucz i dodaj go do swojego repozytorium git lub skonfiguruj swojego agenta ssh, aby ładował klucze, jeśli nadal masz klucze przy sobie, a nie u kogoś innego;)
Innym szybkim rozwiązaniem jest przejście do
.git
katalogu i edycjaconfig
plików[remote "origin"] url
odgit
do,http
aby klucze ssh nie były potrzebne do wypychania i powrócą do pytania o nazwę użytkownika i hasło.Zmień na
źródło
Zmiana pliku wykonywalnego ssh z wbudowanego na nativ w ustawieniach / kontroli wersji / git załatwiła sprawę.
źródło