Otentikasi GitHub gagal melebihi https, mengembalikan alamat email yang salah


128

Memulai dorongan atau tindakan lain apa pun dengan GitHub dari baris perintah (lebih dari https, bukan ssh) yang menyerukan nama pengguna dan kata sandi tidak hanya gagal tetapi, jika berhasil, ia kembali

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

Saya tidak punya @github.com alamat. Kata sandi dan nama pengguna sudah benar.

Saya tahu saya bisa beralih ke SSH dan menggunakan kunci tetapi itu tidak menjawab mengapa otentikasi gagal melalui https.


Dokumentasi git-scm.com/book/en/… git-config - Dapatkan dan atur repositori atau opsi global git-scm.com/docs/git-config
John Smith

Jawaban:


171

Dukungan GitHub segera menentukan akar masalah: otorisasi dua faktor.

Untuk menggunakan GitHub di atas shell dengan https, buat token OAuth . Seperti yang dicatat oleh halaman, saya memang harus menghapus kredensial nama pengguna dan kata sandi saya dari Keychain tetapi dengan osx-keychainmenempatkannya, token disimpan sebagai kata sandi dan segala sesuatunya berfungsi dengan baik seperti yang dilakukan di https tanpa otorisasi dua faktor.


4
+1. Anda juga dapat menggunakan PAT (Token Akses Pribadi) di dalam netrc terenkripsi: stackoverflow.com/a/18607931/6309
VonC

Apa perbedaan antara PAT dan OAuth?
lindhe

@lindhe token OAuth adalah jenis token, PAT adalah token OAauth dalam kasus ini.
Kerry Jones

22

Saya tidak punya @github.comalamat

Anda tidak perlu: @pemisah antara nama pengguna: kata sandi dan domain.
Ini bukan alamat email.

URL penuh GitHub https adalah:

https://username:password@github.com/username/reponame.git

Tanpa kata sandi (yang kemudian akan ditanyakan pada baris perintah), itu akan memberi:

https://username@github.com/username/reponame.git

Tetapi sekali lagi, username@github.combukan alamat email, hanya bagian pertama dari kredensial.

Pastikan casing Anda usernamedan reponamesudah benar: case sensitif .

Perhatikan bahwa Anda dapat menyimpan dan mengenkripsi kredensial Anda di .netrc.gpg(atau _netrc.gpgdi Windows) jika Anda tidak ingin menghapus kredensial tersebut di url.
Lihat " Apakah ada cara untuk melewatkan pengetikan kata sandi saat menggunakanhttps://github ".


Anda juga dapat mengabaikan kata sandi, mengetik kata sandi setiap saat. Dalam hal itu akan terjadi https://username@github.com/username/reponame.git.
Mark Hildreth

Oh, itu masuk akal. Terima kasih. Saya tahu tentang sensitivitas case dan saya yakin bahwa nama pengguna dan kata sandi yang saya berikan benar. (Mereka berfungsi dengan baik untuk masuk ke situs web.) A
ele

2
@ele ya, tetapi apakah kata sandi Anda menyertakan karakter khusus (seperti ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Mereka harus "dikodekan persen" ( en.wikipedia.org/wiki/Percent-encoding ).
VonC

Kata sandi adalah alfanumerik. Saya akan melihat apa yang diberikan 'git remote -v' ketika saya berikutnya di komputer, tetapi sepertinya saya mungkin perlu menghubungi dukungan GitHub berikutnya.
ele

@ele mencoba pendekatan .netrc terlebih dahulu (bahkan tidak mengenkripsi, hanya untuk pengujian). Jika itu tidak berhasil, dukungan GitHub memang langkah selanjutnya.
VonC

21
  • Pergi ke Credential Manager => Windows Manager
  • Hapus semua yang terkait dengan tfs
  • Sekarang klik Tambah kredensial generik dan berikan nilai-nilai berikut

    (1) Alamat internet atau jaringan: git: https: //tfs.donamain name (2) nama pengguna: nama pengguna Anda (3) kata sandi: kata sandi Anda

    ini harus memperbaikinya


Wow. Saya suka cara menyimpan kata sandi yang salah jika Anda salah mengetik. Maka Anda harus secara manual memperbaruinya atau menghapusnya
Kolob Canyon

10

Ini dapat terjadi di Windows jika Anda menyimpan kredensial yang berbeda sebelumnya. Buka Credential Manager dan hapus kredensial github yang tersimpan


1
Dimungkinkan juga untuk secara langsung mengedit kata sandi dalam Windows Credential Manager ke kata sandi baru.
Spenhouet


8

Hal yang sama terjadi pada saya, ketika saya telah mengaktifkan otentikasi 2-arah untuk github. Hal yang saya lakukan untuk menyelesaikan:

  • Dapatkan Anda token akses pribadi. Ini Anda harus memeriksa dan menghasilkan jika belum tersedia. Tautan untuk ini: https://github.com/settings/tokens
  • Buka folder lokal Anda dan hapus dan kloning kembali cabang dari github.
  • Sekarang coba perintah yang Anda coba sebelumnya yaitu: git pull origin master
  • Masukkan nama pengguna dan Dalam kata sandi tempel token yang dihasilkan dan juga jangan lupa untuk menyimpan token itu di suatu tempat, sehingga Anda dapat menggunakannya kembali jika diperlukan.

Melakukan ini akan menyelesaikan masalah Anda.


Info bagus - ini terjadi pada saya di mac => harus membuat ulang PAT saya
SliverNinja - MSFT

Kami harus membuat token jika kami perlu izin yang tidak ada di token yang dibuat sebelumnya. Juga jika kita kehilangan token kita sebelumnya, kita dapat membuat token baru ini dan menggunakan sebagai kata sandi untuk mengotentikasi daripada kata sandi git asli kita.
Mohd Belal

5

Hanya memetikan ini membantu orang lain juga, saya masuk ke aplikasi mac, baris perintah bekerja dengan baik, tetapi karena saya kemudian menyalakan 2FA, perintah saya mengembalikan kesalahan. Saya harus keluar dari aplikasi, maka saya bisa menggunakan token akses Pribadi saya di perintah saya sesuai jawaban ele di sini .

Semoga itu membantu seseorang!


-2

Pada Windows, Anda mungkin diblokir secara diam-diam oleh Antivirus atau firewall Windows Anda. Matikan layanan tersebut untuk sementara dan tekan / tarik dari tempat asal.

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.