github: Tidak tersedia metode otentikasi yang didukung


98

saya menggunakan github dan telah berhasil menambahkan dan menyinkronkan file di laptop saya sebelumnya.

baru-baru ini saya mulai mendapatkan " PuTTY Fatal Error: Disconnected: Tidak ada metode otentikasi yang didukung " setelah menjalankan:

git pull origin master (atau dorong)

namun

ssh git@github.com mengembalikan tanggapan yang benar: ERROR: Hai nama pengguna! Anda berhasil mengautentikasi, tetapi GitHub tidak menyediakan akses shell. Koneksi ke github.com ditutup.

setelah menggali di sekitar github saya menemukan morcel ini:

Tidak ada metode autentikasi yang didukung yang tersedia. Anda harus mengetahui variabel lingkungan GIT_SSH, yang digunakan oleh git untuk menemukan klien berbahasa ssh, jika ssh tidak berfungsi untuk Anda. Instalasi git mungkin menggunakan plink.exe (melalui GIT_SSH) untuk melakukan otentikasi. Jika demikian, pastikan Anda menjalankan pageant.exe, dan kunci yang Anda buat untuk github dimuat ke dalamnya. Ini memberikan kunci untuk plink.exe; tanpa itu, kesalahan di atas akan terjadi.

tidak yakin apa itu plink.exe atau peagant.exe .. dan fakta bahwa ssh git@github.com tampaknya diautentikasi dengan benar membuat saya bertanya-tanya apa solusi terbaik di sini .. saya pasti tidak ingin membuat penyiapan saya terlalu rumit jika tidak perlu.

Jawaban:


101

Anda dapat membuat file bernama ".profile" di direktori home Anda, bagi saya itu C: \ Users \ [user]

Di dalam file itu, letakkan baris kode berikut:

GIT_SSH="/usr/bin/ssh.exe"

Ini akan menyetel variabel lingkungan GIT_SSH untuk menggunakan klien ssh yang disertakan dengan git.

Skrip .profile dijalankan saat Anda memulai baris perintah Git Bash.

Edit: Ini adalah profil saya. Ini akan menanyakan kata sandi Anda saat pertama kali Anda memulai prompt perintah git, kemudian akan mengingatnya sejak saat itu, sampai Anda me-reboot komputer Anda. Sangat berguna sehingga Anda tidak perlu terus-menerus memasukkan kata sandi setiap kali ingin melakukan sesuatu.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 Saya hanya mengalami masalah saat menggunakan Putty / Pageant untuk kebutuhan git ssh. Menggunakan klien ssh bawaan bekerja dengan sangat baik. Ini menjelaskan mengapa ssh git@github.com mengembalikan dengan baik jika Anda menjalankannya sendiri, tetapi membiarkan git menggunakan alat yang dikonfigurasi (Putty / Pageant) tidak.
enriquein

14
Bagi saya itu hanya GIT_SSH = "/ bin / ssh.exe" (di Windows). Terima kasih!
Martin Konicek

1
@ Justin, apakah Anda menggunakan prompt mingw32?
Rex Morgan

2
Menggunakan cygwin di Windows 7, jawaban di atas berfungsi tetapi saya perlu GIT_SSHke .bash_profiledan tidak.profile
Gabe

2
Dalam kasus saya dengan Windows 10 menggunakan Git Bash adalahGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH

31

Menggunakan TortoiseGit

TortoiseGit> Pengaturan ... Jaringan ... Klien SSH: C:\Program Files\Git\usr\bin\ssh.exe

Lokasi saya bervariasi. Di satu komputer, itu masukC:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit


5
Terima kasih. ini berhasil. catatan: Anda mungkin harus mencari-cari di mana tepatnya 'ssh.exe' berada di mesin tertentu. bagi saya itu adalah C: \ Program Files \ Git \ usr \ bin \ ssh.exe (mungkin pada mesin yang sudah ketinggalan zaman)
pestophagous

10

"... tidak yakin apa itu plink.exe atau peagant.exe ..."

Karena Anda bertanya: plink & pageant adalah bagian dari PuTTY suite, yang merupakan implementasi SSH yang mendukung Linux & Windows dan sepenuhnya dominan di Windows.

SSH

Secure Shell (SSH) adalah protokol jaringan kriptografi untuk mengamankan komunikasi data. Ini membuat saluran aman melalui jaringan yang tidak aman dalam arsitektur klien-server, menghubungkan aplikasi klien SSH dengan server SSH. Aplikasi umum termasuk login baris perintah jarak jauh, eksekusi perintah jarak jauh, tetapi layanan jaringan apa pun dapat diamankan dengan SSH.

jika Anda pernah menggunakan Telnet, itu seperti itu (tetapi lebih aman): ini memungkinkan Anda mengakses bash shell (baris perintah) dari jarak jauh dari host Linux.

Dempul

PuTTY adalah emulator terminal gratis dan sumber terbuka, konsol serial dan aplikasi transfer file jaringan. Ini mendukung beberapa protokol jaringan, termasuk SCP, SSH, Telnet, rlogin ...

Di Windows, ini adalah perangkat lunak dominan untuk mengakses baris perintah host Linux dari jarak jauh di bawah protokol SSH (di atas). Di Windows, ekstensi .exe adalah untuk file yang dapat dieksekusi. Jadi catatan tentang plink.exe & pageant.exe mungkin tidak berlaku jika Anda menggunakan Linux . PuTTY termasuk

Plink : antarmuka baris perintah ke bagian belakang PuTTY

Kontes : agen otentikasi SSH untuk PuTTY, PSCP dan Plink

Dari ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

Ketika kunci publik ada di ujung jarak jauh dan kunci pribadi yang cocok ada di ujung lokal, mengetikkan kata sandi tidak lagi diperlukan ... untuk keamanan tambahan, kunci pribadi itu sendiri dapat dikunci dengan frasa sandi.

Jadi github di-host di mesin Linux dan menggunakan SSH untuk mengamankan koneksi. SSH mengautentikasi dengan kata sandi atau kunci, banyak host (github?) Hanya mengautentikasi dengan kunci. Setup Anda tampaknya mencoba untuk mengotentikasi dengan kunci. Kunci dan host bukan satu-untuk-satu: Anda dapat memiliki dua kunci untuk host yang sama dan / atau dua host untuk kunci yang sama, jadi keduanya perlu dikelola. Jika Anda menggunakan Windows, sesi SSH Anda mungkin diakses melalui plink dan kunci Anda mungkin dikelola oleh Pageant.

Impor kunci yang Anda perlukan setiap kali Anda memuat Pageant. Jika Anda mengikuti panduan yang mengatakan "impor kunci Anda", dan melihatnya berfungsi, tetapi tidak berfungsi sekarang, lihat Bab 9: Menggunakan Pageant untuk otentikasi .

Satu tip terakhir jika Anda menggunakan Windows: Anda mungkin memiliki beberapa contoh suite PuTTY yang diinstal oleh berbagai alat. TortoiseGit, misalnya, menginstalnya sendiri.


8

Saya mengalami masalah ini karena saya GIT_SSHmenunjuk ke versi TortoiseSVN dari Plink.exe. Saya mengubahnya untuk menunjuk ke versi TortoiseGit, memulai ulang cmd dan berhasil.

Saya tidak dapat mengingat dengan tepat, tetapi versi TortoiseSVN mungkin adalah versi 32-bit, dan versi TortoiseGit adalah 64-bit (terletak di Program Files, bukan Program Files (x86)).

Periksa ulang GIT_SSHenv var Anda.

Saya lebih suka menggunakan git dengan normal cmd.exe(di Console2 tentunya)


Anda ingat dengan benar; Saya memiliki masalah yang sama, dengan GIT_SSH menunjuk ke TortoiseSVN versi 32-bit dari TortoisePlink.exe. Memindahkannya ke versi TortoiseGit berhasil.
nitwit

6

Untuk Pengguna TortoiseGit di Windows

Awalnya, saya biasa mengatur sebagian besar repositori Github / Bitbucket saya menggunakan URL repositori SSH karena (aslinya) ini digunakan sebagai satu-satunya cara mudah untuk mencegah TortoiseGit meminta kata sandi Anda pada setiap tindakan.

Tapi mengatur TortoiseGit seperti ini selalu menyakitkan. Setiap kali saya butuh waktu berjam - jam untuk mengatur dengan benar, karena opsi penginstalan default sepertinya tidak pernah berfungsi (bahkan hingga 2016, heesh!).

Tetapi TortoiseGit sekarang memiliki manajemen kata sandi yang lebih baik untuk HTTPS, dan Github benar-benar merekomendasikan penggunaan URL HTTPS jika memungkinkan.

URL SSH: git@github.com:User/repo-name.git

URL HTTPS: https://github.com/User/repo-name.git

Manfaat HTTPS adalah:

  • Tidak ada pengelolaan atau pembuatan kunci SSH
  • Tidak perlu pageant.exeterus - menerus berjalan (yang meminta kata sandi Anda pada setiap peluncuran)
  • Menggunakan TortoiseGit dari Australia, saya menemukan bahwa klon melalui HTTPS 5-10x lebih cepat daripada SSH

+ 'git config --global http.sslVerify false'
Mike

5

Jika Anda menggunakan Pageant dan mendapatkan kesalahan yang dijelaskan dalam pertanyaan setelah me-reboot PC Anda (atau menutup dan membuka kembali Pageant):

Kesalahan ini dapat disebabkan oleh Pageant tidak memuat kunci SSH GitHub Anda secara aktif. Secara default, Pageant TIDAK secara otomatis memuat kunci dari sesi sebelumnya saat dimulai.

Untuk memuat kunci:

  1. Buka Kontes. (Di Windows, jika Pageant berjalan, itu akan memiliki ikon di baki sistem. Klik dua kali itu.)
  2. Klik tombol Add Key, dan lanjutkan untuk menambahkan kunci GitHub SSH Anda yang sudah ada.

Untuk menghindari masalah ini di masa mendatang, Anda dapat mengonfigurasi Pageant untuk memuat kunci Anda secara otomatis saat dimulai. (Kontes akan secara otomatis meminta kata sandi jika kunci Anda dilindungi kata sandi.)

Langkah-langkah untuk melakukan ini (dengan asumsi Anda sudah memiliki Pageant yang dikonfigurasi untuk dijalankan ketika Windows dimulai):

  1. Temukan pintasan yang digunakan oleh Windows untuk menjalankan Pageant saat Windows dimulai. (Mungkin ada di folder Startup, yang dapat dibuka dengan Start> Run> shell:startup)
  2. Dalam dialog Properti pintasan, tambahkan jalur lengkap dan nama file dari file kunci SSH ke bidang "Target".

Referensi dan detail lengkap: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

Masalah saya adalah saya mencoba menggunakan nama pengguna github saya. Rupanya saat menggunakan Github (atau apakah itu hal Git?) , Jika Anda menggunakan otentikasi berbasis kunci, Anda perlu mengatur nama pengguna Anda ke git.

Saya tidak yakin mengapa Anda bahkan membutuhkan nama pengguna sama sekali - mungkin seseorang yang lebih berpengetahuan dapat menjelaskannya?


Saat mengkloning repositori pribadi, itu akan menjadi URL seperti git@github.com: username / Repository.git. Saya juga tidak sepenuhnya yakin dengan sains di baliknya tetapi tampaknya git adalah nama pengguna umum untuk setiap akun Github
Musim Dingin

1
PLink / Pageant berfungsi dengan baik. Ini adalah masalah sebenarnya, dan menggunakan sesuatu seperti ssh://git@github.com/myname/repo.gitakan bekerja dengan baik. Kerja bagus. Untuk alasannya, saya berasumsi itu untuk mengunci keamanan. Login pengguna 'git' telah dinonaktifkan, jadi tidak ada yang bisa masuk ke sistem dengan cara itu. Mereka harus memiliki kunci yang valid bahkan untuk berbicara dengan Github, dan setelah mereka memiliki kunci yang valid, mereka dapat mencocokkannya dengan pengguna untuk memasukkannya.
ChokesMcGee

2

Di mesin Windows 7 saya menjalankan Github untuk Windows menggunakan git versi 1.8.3.msysgit.0. Saya menemukan bahwa memperbarui variabel lingkungan sistem saya GIT_SSH ke C: \ Program Files (x86) \ Git \ bin \ ssh.exe sepertinya berhasil. Ini juga memperbaiki masalah saya dengan menghubungi repo git OpenShift.


2

Bekerja untuk saya di Windows 8: Variabel GIT_SSH mengarah ke plink.exe, Mengubahnya di pengaturan sistem untuk mengarah ke ssh biner, dan itu telah memperbaiki masalah. Untuk mengetahui jalur lengkap ke ssh, jalankan:

where ssh

2

Untuk mengatasi masalah ini, inilah yang saya lakukan.

Saya menggunakan Git Bash di Windows 10

Saya memulai Pageant, menekan Add Key,

masukkan deskripsi gambar di sini

dinavigasi ke folder C: \ Users \ username \ .ssh dan pilih kunci saya

masukkan deskripsi gambar di sini

Saya kemudian mencoba melakukan git push dan kali ini berhasil.


Ingat, Anda mungkin harus melakukan ini setiap kali Anda me-reboot PC Windows Anda - Anda dapat meletakkan Pageant ke dalam folder startup Anda sebagai pintasan dengan argumen baris perintah yang benar ke file kunci pribadi Anda, tetapi jika Anda telah menetapkan kata sandi pada Anda kunci pribadi ketika Anda membuatnya, Anda harus ingat untuk mengklik kanan pada ikon Pageant di baki alat Anda, pilih "Tambahkan kunci", dan isi setelah setiap reboot.
webbje


1

Saya mengalami masalah yang sama ini, namun solusi GIT_SSH tampaknya berfungsi sekali untuk saya. Setelah komputer restart, saya menyadari itu adalah sesuatu yang lain, karena saya dapat mengkloning repositori pribadi saya tanpa masalah menggunakan Git Bash atau Command Prompt, tetapi tidak di Sublime Text 3 dengan plugin SublimeGit. Solusi saya sederhana dan sebenarnya adalah apa yang @BlueRaja - Danny Pflughoeft sebutkan tetapi saya pikir itu bisa menggunakan beberapa arah;)

Pada dasarnya Anda hanya perlu mengedit ~/.ssh/configdan memastikan nama penggunanya git. Anda juga dapat memberitahukannya untuk menggunakan kunci SSH tertentu untuk Github - ~/.ssh/configFile saya terlihat seperti berikut:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

Saya memiliki kunci khusus untuk Github karena banyaknya hal lain yang saya lakukan sepanjang hari, tetapi jika Anda hanya punya satu maka biasanya akan ~/.ssh/id_rsa.pubseperti yang dijelaskan Github di sini .

Saya tahu setiap orang memiliki solusi yang berbeda, tetapi saya akan meninggalkan ini di sini untuk siapa saja yang mungkin menemukan artikel ini tanpa perbaikan. Semoga berhasil!


1

Saya mendapat kesalahan ini saat menggunakan TortoiseGit untuk mengkloning repositori dari GitHub. Diperbaiki dengan mengklik "Load Putty Key" dan memilih file kunci (* .pkk) dalam dialog Git clone.



0

Saya mendapat masalah ini (ssh langsung berfungsi, tetapi git pull gagal) karena git remote saya tidak seperti yang saya kira.

Ya, ya, saya tahu itu kesalahan yang bodoh, tetapi itu terjadi dan perlu diperiksa.

Menggunakan git remote -v


0

Saya mengalami masalah serupa setelah memperbarui GitExtensions ke versi 3.3.0.7719

Entah bagaimana itu mengembalikan pengaturan otentikasi saya untuk menggunakan PuTTY daripada OpenSSH.

Dalam versi itu, berikut adalah menu yang saya gunakan untuk mengaktifkan OpenSSH lagi:

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.