Saya menyiapkan server git dan sekarang ingin mendorong repo saya dari klien. Saya menggunakan git push origin master
dan mendapatkan pesan kesalahan ini:
fatal: protocol error: bad line length character: Unab
Saya tidak tahu apa yang salah. Saya tidak tahu apa itu "Unab". Saya mencoba mengubah ukuran shell tetapi masih "Unab". Saya tidak dapat menemukan solusi untuk pesan kesalahan ini.
Saya menyiapkan server dengan "authorized_keys" dan SSH. (Saya dapat menyambungkannya, menggunakan SSH.)
Sepertinya ini masalah git?
BTW: Server diatur di VM Windows 7
git
ssh
authorized-keys
pengguna437899
sumber
sumber
Jawaban:
Pesan kesalahan ini agak tumpul, tetapi sebenarnya yang coba diberitahukan kepada Anda adalah bahwa server jarak jauh tidak membalas dengan respons git yang tepat. Akhirnya, ada masalah di server yang menjalankan
git-receive-pack
proses tersebut.Dalam protokol Git, empat byte pertama harus menjadi panjang baris. Sebaliknya, mereka adalah karakternya
Unab
... yang mungkin merupakan awal dari pesan kesalahan. (yaitu, mungkin "Unable to...
" melakukan sesuatu).Apa yang terjadi saat Anda lari
ssh <host> git-receive-pack <path-to-git-repository>
? Anda akan melihat pesan kesalahan bahwa klien git Anda sedang muntah dan Anda mungkin dapat memperbaikinya.sumber
ssh <host> /bin/true
seharusnya tidak menghasilkan apa pun..bashrc
di mesin yang meng-host repositori Git yang saya coba tarik memiliki baris yang menghasilkan gema ke output standar. (Artinya, saya adalah pemilik repositori pada mesin jarak jauh, jadi saya.bashrc
yang menyebabkan masalah.) Saya menggunakan trik yang diberikan oleh pengguna ruslo dalam jawaban lain, yaitu mengarahkan output perintah itu dari stdout ke stderr (some_command 1>&2
). Setelah itu,git pull
dikerjakan kembali.0000
dan kursor segera setelahnya seolah-olah baris lain harus ditulis tetapi tidak pernah selesai.Saya mengalami masalah serupa, tetapi pesan kesalahan tepatnya adalah:
Ini di Windows, dengan
GIT_SSH
set ke jalurplink.exe
PuTTY.Kemungkinan masalah dan solusinya:
plink.exe
benar. Jalur gaya Unix juga berfungsi dengan baik, misalnya/c/work/tools/PuTTY/plink.exe
pageant.exe
) sedang berjalansumber
fatal: protocol error: bad line length character: git@
. Sungguh pesan kesalahan yang menyesatkan.Saya menghadapi masalah yang sama setelah memutakhirkan git ke 2.19.0
Alat> Setelan> Ekstensi Git> SSH
Pilih [ OpenSSH ] daripada [ Putty ]
sumber
fatal: protocol error: bad line length character: git@
. Pastikan kunci SSH dibuat dan ditambahkan ke GitLab . Mungkin ekstensi Git perlu dimulai ulang.Saya mengalami masalah yang sama setelah menginstal GIT di Windows. Pada awalnya itu berhasil; kemudian, sehari kemudian (setelah PC reboot), tidak lagi, dan saya mendapatkan ini:
Masalahnya adalah setelah reboot, "pageant.exe" Putty yang dijalankan secara otomatis tidak lagi memiliki kunci pribadi yang aktif. Saat Anda menambahkan kunci dalam kontes, itu bukan pengaturan yang tetap secara default. Saya hanya perlu menambahkan kunci lagi, dan berhasil dengan baik. Jadi, untuk kasus itu, perlu membuat pagenant memuat kunci secara otomatis, seperti yang dibahas di sini:
https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty
sumber
Mungkin Anda memiliki pernyataan di server .bashrc yang menghasilkan keluaran. Saya, misalnya punya ini:
Dalam hal ini, keluaran dari penggunaan rvm akan (salah) diartikan sebagai berasal dari git. Jadi gantilah dengan:
sumber
Setelah memuat kunci pribadi SSH di Ekstensi Git, masalah ini teratasi.
sumber
Anda dapat mengarahkan keluaran apa pun dari
.bashrc
kestderr
:git akan mengabaikan simbol ini
sumber
rvm use 2.0.0-p353
di saya.bashrc
, yang pasti membingungkangit pull
. Setelah menambahkan1>&2
dan mencoba lagi,git pull
bekerja dengan baik.Saya mengalami masalah serupa di Windows menggunakan Git Bash. Saya terus mendapatkan kesalahan ini saat mencoba melakukan klon git. Repositori berada di kotak Linux dengan GitLab diinstal.
Saya memastikan kunci ssh dibuat. Kunci publik ditambahkan di GitLab. Ssh-agent sedang berjalan dan kunci yang dihasilkan telah ditambahkan ( tautan github ).
Saya kehabisan opsi dan akhirnya mencoba menutup Git Bash dan membukanya lagi dengan mengklik kanan 'Run as Administrator'. Bekerja setelah itu.
sumber
Ini mungkin membantu seseorang. Ketika saya mencoba mengkloning proyek dari instans EC2, saya mendapatkan kesalahan di bawah ini:
Resolusi untuk saya mencakup langkah-langkah di bawah ini:
Gunakan ID kunci SSH EC2 sebagai kunci publik untuk git clone. Contoh:
git clone ssh: // {ID Kunci SSH}@someaccount.amazonaws.com/v1/repos/repo1
sumber
plink <server_name> ls
, hal pertama yang dicetak plink ke stdout adalahlogin as
, yang tampaknya coba ditafsirkan oleh git sebagai sesuatu yang penting. Perbaikan cepat adalah dengan sederhanaunset GIT_SSH
danunset SVN_SSH
. Info lebih lanjut di siniset GIT_SSH=
danset SVN_SSH=
Bagi saya itu karena saya baru saja menambahkan
ke .ssh / config
mengomentari ini memungkinkannya bekerja
sumber
Periksa file startup Anda pada akun yang digunakan untuk menghubungkan ke mesin jarak jauh untuk pernyataan "echo". Untuk shell Bash, ini akan menjadi .bashrc dan .bash_profile Anda, dll. Edward Thomson benar dalam jawabannya tetapi masalah khusus yang saya alami adalah ketika ada cetakan boiler-plate saat login ke server melalui ssh. Git akan mendapatkan empat byte pertama dari pelat-boiler itu dan memunculkan kesalahan ini. Sekarang dalam kasus khusus ini saya akan menebak bahwa "Unab" sebenarnya adalah karya "Unable ..." yang mungkin menunjukkan bahwa ada sesuatu yang salah pada host Git.
sumber
Dalam kasus saya setelah mengambilnya ditulis:
fatal: protocol error: bad line length character: Pass
. Juga setelah mendorong saya punya:fatal: protocol error: bad line length character: git@ Done
.Setelah reboot Windows saya harus memulai "PuTTY agent" (pageant.exe) lagi dan menambahkan kunci pribadi yang menghilang dari daftar kunci.
sumber
FYI Saya mendapat pesan kesalahan yang sama ini setelah saya mengupgrade kontainer CentOS6 ke CentOS7 - beberapa operasi git mulai gagal saat membangun kontainer, mis.
Menjalankan ssh memberi saya kesalahan yang bisa saya cari:
Itu membawa saya ke https://github.com/wolfcw/libfaketime/issues/63 di mana saya menyadari bahwa saya telah lupa saya memiliki
LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
Dockerfile orang tua. Mengomentari itu memperbaiki kesalahan.sumber
Dalam kasus saya, masalahnya adalah 32-bit Putty dan pageant.exe - ia tidak dapat berkomunikasi dengan TortoisePlink.exe 64-bit. Mengganti Putty 32-bit dengan versi 64-bit menyelesaikan masalah.
sumber
Saya mengalami kesalahan yang sama
"fatal: protocol error: bad line length character: shmi"
Dimanashmi
adalah nama pengguna dalam kasus saya. Saya mengganti SSH dari PuTTY ke OpenSSH"Git Extensions->Settings->SSH"
. Itu membantu.sumber
Saya memiliki masalah yang sama dengan Christer Fernstrom. Dalam kasus saya, itu adalah pesan yang saya masukkan ke .bashrc saya yang mengingatkan saya untuk melakukan pencadangan ketika saya belum melakukannya dalam beberapa hari.
sumber
Hal berikut dapat membantu seseorang: Saat mencoba menggandakan proyek yang saya miliki di instans AWS EC2 saya, saya mendapatkan kesalahan berikut:
Ini disebabkan karena mencoba ssh sebagai root, bukan EC2-USER. jika Anda benar-benar ssh tanpa melakukan klon git ... Anda akan melihat pesan kesalahan dalam sesuatu di sepanjang baris "Harap masuk dengan ec2-user" Setelah saya melakukan klon git sebagai pengguna ec2, itu bagus.
sumber
Saya juga mengalami kesalahan itu sesekali, tetapi jika terjadi, itu berarti cabang saya tidak mutakhir jadi saya harus melakukannya
git pull origin <current_branch>
sumber
Git tidak meminta kata sandi dan gagal dengan pesan samar serupa "fatal: protokol error: karakter panjang baris buruk: pengguna" jika Anda tidak memiliki pengaturan otentikasi kunci pribadi Anda juga.
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server memberi tahu cara menentukan kunci publik di server. Pada dasarnya tambahkan kunci publik ke ~ / .ssh / authorized_keys atau ~ / .ssh / authorized_keys2
Saya harus sedikit kesulitan tentang cara memberikan kunci pribadi ke Git Bash di mesin windows. Jawaban Dan McClain di /server/194567/how-do-i-tell-git-for-windows-where-to-find-my-private-rsa-key/382801#382801 menjelaskan hal itu. Satu tambahan untuk jawabannya, dalam kasus saya file kunci pribadi diharapkan diberi nama id_rsa.pub
sumber
Bagi saya menambahkan detail host yang sama ke dalam Putty dengan kunci pribadi (ubah dengan puttygen) berfungsi. Perintah git bash apa pun setelah itu tidak memiliki masalah.
sumber
Jika Anda menggunakan Putty. Kemudian pastikan untuk menjalankan Pageant dan kunci pribadi Anda dimuat di Pageant (klik kanan mouse pada ikon Pageant di Taskbar dan klik "View keys" pada menu yang muncul).
Sebaliknya saat Anda melakukannya di cmd.exe:
git clone ssh://name@host:/path/to/git/repo.git
Anda mendapatkan pesan ini "fatal: protokol error: karakter panjang baris salah:"
sumber
TL; DR: Do tidak menghilangkan
username@
di URL remote ketika pada Windows.Di Linux dan Windows dengan ssh default, Anda dapat menghilangkan nama pengguna dari URL jarak jauh, seperti:
Karena perilaku default ssh adalah hanya menggunakan nama pengguna apa pun yang saat ini Anda gunakan untuk masuk. Jika Anda menggunakan Windows dan telah mengatur git untuk digunakan
plink.exe
sehingga Anda dapat menggunakan kunci yang dimuat di Andapageant
, maka ini tidak akan berfungsi, karenaplink
tidak memiliki perilaku nama pengguna otomatis yang sama, yang mengakibatkan pesan kesalahan samar tersebut, karena akan prompt untuk nama pengguna:Melawan:
Jika Anda sudah mengkloning repositori, entah bagaimana Anda dapat memperbaiki remote di Anda
.git/config
dengan menambahkanusername@
ke URL jarak jauh.sumber
git remote set-url origin myusername@...
membantu saya.Periksa apakah akses Shell diizinkan di server.
sumber
Kesalahan diubah menjadi: fatal: protokol kesalahan: karakter panjang baris buruk: fata
setelah menambahkan lokasi git-upload-pack ke jalur sistem.
Masalahnya tampaknya berupa tanda kutip yang ditambahkan di sekitar nama repositori: Mencari dengan alat seperti Monitor Proses (dari internal sys), yang ditambahkan oleh klien git. Tampaknya menjadi masalah jendela khusus git.
Saya mencoba baris perintah yang sama pada prompt server: kesalahan penuh adalah "fatal: bukan repositori yang diberikan (atau salah satu direktori induk): .git"
Kesimpulannya, bagi saya ini seperti bug perangkat lunak. Harap diperhatikan bahwa saya bukan ahli git, ini pertama kali saya menggunakan git, saya berasal dari subversi dan perforce.
sumber
Kami juga mengalami ini.
Saya tidak tahu detail detail tentang apa yang salah, tetapi dalam kasus kami yang memicunya adalah bahwa disk di server penuh.
sumber
Ini bisa menjadi akses keamanan pada mesin Anda, apakah Anda menjalankan Pageant (yang merupakan agen dempul)?
sumber
Anda selalu dapat memiliki tautan http ke proyek git Anda. Anda dapat menggunakannya sebagai pengganti ssh link. Ini hanyalah opsi yang Anda miliki
sumber
Nah, saya mengalami masalah yang sama (Windows 7). Cobalah untuk mendapatkan repo dengan kata sandi. Saya menggunakan Git Bash + Plink (variabel lingkungan GIT_SSH) + Pageant. Menghapus GIT_SSH (sementara) membantu saya. Saya tidak tahu mengapa saya tidak dapat menggunakan login by pass dan login dengan RSA pada saat yang sama ...
sumber
Jawaban terlambat di sini, tapi berharap ini akan membantu seseorang. Jika ini adalah kesalahan protokol, ia harus melakukan sesuatu dengan git lokal Anda yang tidak dapat berkomunikasi dengan git jarak jauh. Ini bisa terjadi jika Anda mengkloning repo melalui ssh dan beberapa saat kemudian, Anda kehilangan kunci repo atau agen ssh Anda tidak dapat menemukan kunci tersebut lagi.
Larutan
Buat kunci baru dan tambahkan repo git Anda atau konfigurasikan agen ssh Anda untuk memuat kunci jika Anda masih memiliki kunci dengan Anda & tidak dengan orang lain;)
Perbaikan cepat lainnya adalah pergi ke
.git
direktori Anda dan editconfig
file[remote "origin"] url
darigit
menjadihttp
sehingga kunci ssh tidak diperlukan untuk mendorong dan itu akan kembali untuk menanyakan nama pengguna dan kata sandi Anda.Mengubah
sumber
Mengubah exectuable ssh dari builtin ke nativ di bawah pengaturan / kontrol versi / git melakukan trik untuk saya.
sumber