Git push menghasilkan "Otentikasi Gagal"


705

Saya telah menggunakan Github untuk beberapa saat dan saya baik-baik saja dengan git add, git commit, dan git pushsejauh tanpa masalah. Tiba-tiba saya mengalami kesalahan yang mengatakan:

fatal: Otentikasi Gagal

Di terminal saya mengkloning repositori, mengerjakan file dan kemudian saya biasa git addmenambahkan file ke log komit dan ketika saya melakukannya git commit, itu bekerja dengan baik. Akhirnya, git pushminta nama pengguna dan kata sandi. Saya menempatkan mereka dengan benar dan setiap kali saya melakukan ini, ia mengatakan kesalahan yang sama.

Adakah yang tahu apa penyebab masalah ini dan bagaimana saya bisa memperbaikinya?

Isinya .git/configadalah:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://www.github.com/######/Random-Python-Tests
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = #####
        email = ############

apa nama pengguna Anda di github dan apa isi dari .git / config?
mnagel

tambahkan ke pertanyaan, komentar jangan mengatasi teks yang panjang
mnagel

Ya maaf, saya memulai komentar karena kebiasaan lalu mengubahnya.
zkirkland

Url Anda tidak beres. Saya pikir itu harus dimulai dengan https://, bukan http://.
John Szakmeister

Diubah menjadi https ... tidak berfungsi.
zkirkland

Jawaban:


1203

Jika Anda mengaktifkan otentikasi dua faktor di akun Github Anda, Anda tidak akan bisa mendorong melalui HTTPS menggunakan kata sandi akun Anda. Alih-alih, Anda perlu membuat token akses pribadi. Ini dapat dilakukan dalam pengaturan aplikasi akun Github Anda. Menggunakan token ini sebagai kata sandi Anda akan memungkinkan Anda untuk mendorong ke repositori jarak jauh Anda melalui HTTPS. Gunakan nama pengguna Anda seperti biasa.

https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/

Anda juga mungkin perlu memperbarui asal untuk repositori Anda jika disetel ke https:

git remote -v 
git remote remove origin 
git remote add origin git@github.com:user/repo.git  

5
Memang. +1. Saya sajikan PAT di sini stackoverflow.com/a/19223896/6309 dan detail prosesnya di sana: stackoverflow.com/a/18607931/6309
VonC

3
Saya perlu untuk membuat kunci rsa saya agar operasi Git normal berfungsi setelah mengaktifkan 2FA.
R11G

5
Terima kasih! Baru saja kesalahan ini dan ini membantu, hanya untuk menunjukkan. Setelah Anda membuat token akses pribadi, Anda menyalinnya lalu ketika mendorong repo, ia akan meminta nama pengguna dan kata sandi Anda. Rekatkan Token Akses dalam Kata Sandi
pourmesomecode

87
Anda juga dapat melakukannya git remote add origin https://username:access-token@github.com/username/repo.gituntuk menyimpan token akses pribadi Anda.
mailmindlin

2
Bagi saya, yang harus saya lakukan adalah mengaktifkan otentikasi SSH dari mesin lokal saya di akun GitHub saya, dan kemudian beralih ke alamat jarak jauh ssh git; help.github.com/articles/changing-a-remote-s-url
user5359531

603

Coba langkah-langkah berikut untuk Mengedit atau Menghapus kredensial yang disimpan:

  1. Klik Mulai
  2. Jenis: Credential Manager (Pada Windows 10, ini berada di bawah "Start-> Settings". Kemudian cari "Credential Manager")
  3. Lihat Windows Credentials Managerpintasan dan klik dua kali untuk membuka aplikasi.
  4. Setelah aplikasi terbuka, klik pada Windows Credentialstab.
  5. Temukan kredensial yang ingin Anda hapus / perbarui, kredensial akan mulai dengan "git:" dan mungkin dimulai dengan "ada:"
  6. Klik pada entri kredensial, itu akan membuka tampilan detail entri.
  7. Klik Edit atau Hapus sesuai kebutuhan dan konfirmasikan.
  8. Cuci, bilas, ulangi seperlunya.

masukkan deskripsi gambar di sini


2
Dalam kasus saya ini bukan di "Kredensial Windows" tetapi pada "Kredensial Generik". Hapus kredensial, lakukan triknya.
Toni Gamez

8
Anda dapat membuka jendela di atas dengan (windows + R) -> "control / name Microsoft.CredentialManager"
Sufiyan Ansari

Kredensial mungkin ada di sana, tetapi tanpa 'git:' di depannya. Itu tidak akan berhasil. Itu harus dimulai dengan 'git:'
Marques

1
Majikan saya mengatur otentikasi windows ke Git Hub, jadi setiap kali saya mengubah kredensial windows saya, saya harus memperbaruinya untuk kontrol sumber. Jawaban Anda berhasil.
shary.sharath

1
Jawaban yang fantastis. Kami mempertahankan repositori BitBucket internal, tempat masing-masing kredensial akun kami diautentikasi ke organisasi kami. Baru-baru ini semua repositori saya menjadi tidak tersedia untuk mendorong perubahan kode. Meskipun saya dapat mengubah kredensial berdasarkan kasus per kasus, saya benar-benar tidak ingin melakukan ini untuk setiap proyek. Pendekatan @ Pradeep memungkinkan saya untuk memecahkan penyebab mendasar, yang lebih dari sekadar perubahan kata sandi. Organisasi kami baru-baru ini mengubah nama domain internal, jadi dengan mengedit kredensial secara terpusat, saya dapat memperbaiki semua proyek saya.
Michael M

79

Ini bekerja untuk saya, dan itu juga mengingat kredensial saya:

  1. Jalankan gitbash

  2. Arahkan ke direktori repo

  3. Lari git config --global credential.helper wincred


18
Butuh beberapa saat untuk mencari tahu apa yang dilakukannya - menggunakan Credential Manager di Windows Control Panel. Untuk berhenti menggunakannya: git config –global credential.helper unset Sumber , dan detail lainnya dalam jawaban ini .
Ian W

7
@IanW Maksud Anda git config --global --unset credential.helper? Itulah yang berhasil bagi saya di Git Bash.
Ellen Spertus

1
Berhati-hatilah dengan perintah ini karena itu akan menggantikan jalur nyata ke pembantu kredensial Anda hanya dengan "wincred" yang tampaknya bukan yang Anda butuhkan.
amarax

2
Saya menjalankan perintah ini untuk mencari tahu bukan itu yang saya inginkan, cara yang tepat untuk membatalkannya adalah git config --global --unset credential.helper. Pada akhirnya, saya mengembalikan pengaturan yang benar dengan git config credential.helper store.
Omar

Ini membantu saya! Terima kasih!
Jefsama

70

Mungkin Anda baru saja mengganti kata sandi untuk akun git. Anda dapat mencoba opsi git pushwith-u

git push -u origin branch_name_that_you_want_to_push

Setelah menjalankan perintah di atas, ia akan meminta kata sandi untuk memberikan kata sandi Anda yang diperbarui

Semoga ini bisa membantu Anda


ini berfungsi, yang httpshanya membutuhkan lingkungan saya
BMW

1
Tentunya jauh lebih mudah daripada kebanyakan jawaban. (Dan mengubah kata sandi harus menjadi alasan paling umum untuk mendapatkan kesalahan otentikasi ;-))
Michel

jika Anda mengalami ini pada klon yang ada - maka lakukan sajagit push -u
Ajay Chebbi

64

Pertama, Anda dapat memastikan untuk menggunakan url yang tepat:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

Kemudian, jika itu berfungsi sebelumnya, dan jika itu tidak meminta nama pengguna Anda, itu pasti karena Anda telah menyimpan kredensial Anda (login / kata sandi) dalam $HOME/.netrcfile, seperti yang dijelaskan di sini . Anda dapat memeriksa ulang pengaturan itu, dan memastikan bahwa proxy Anda, jika ada, belum berubah.

Jika itu masih tidak berhasil, Anda dapat beralih ke url ssh:

git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git

Tetapi itu berarti Anda telah menerbitkan kunci publik ssh Anda di pengaturan Akun Anda .


9
Beralih dari HTTPS ke SSH memecahkan masalah bagi saya.
leymannx

3
Saya telah mengaktifkan otentikasi 2-faktor untuk akun GH saya dan mengalihkan url jarak jauh ke SSH dari HTTPS menyelesaikan masalah "otentikasi gagal" untuk saya. Masuk akal. Terima kasih!
Walter Roman

55

Itu terjadi jika Anda mengubah login atau kata sandi akun layanan git (Git) Anda. Anda perlu mengubahnya di Windows Credentials Manager juga. ketik "Credential Manager" di menu Windows Search buka.

Windows Credentials Manager-> Credential Windows dan di bawah Kredensial Generik edit kata sandi git Anda.


4
Ini menyelamatkan saya ketika bekerja dengan GitLab (ketika hampir tidak ada yang membantu). Terima kasih!
John Humphreys - w00te

2
Saya belum pernah mendengar tentang manajer kredensial windows ini .... Terima kasih!
Sam

1
Saya memberikan kredensial yang salah ketika Git meminta saya untuk id dan kata sandi pengguna sambil mendorong file baru ke repositori jarak jauh. Ketika saya menjalankan perintah push lagi git tidak meminta saya untuk kredensial tetapi sebaliknya itu hanya melempar kesalahan otentikasi gagal. Saya menyadari setelah membaca jawaban ini bahwa git menggunakan kredensial yang tersimpan di manajer kredensial dan itu seharusnya menjadi alasan mengapa git tidak meminta kata sandi setiap kali kami mendorong ke tempat penyimpanan jarak jauh. Saya menghapus kata sandi git di manajer kredensial dan setelah itu git lagi meminta saya untuk id dan kata sandi pengguna.
Jchenna

41

Pada dasarnya kredensial saya kedaluwarsa, dan saya menghadapi masalah di atas.

Mengikuti 2 perintah membantu saya:

git config --global --unset credential.helper

git config credential.helper store

Ini akan meminta Anda untuk kredensial waktu berikutnya ketika Anda mencoba untuk mendorong.

Ikuti panduan di bawah ini untuk detail lebih lanjut untuk penyimpanan nama pengguna dan kata sandi yang aman dan tidak aman:

https://git-scm.com/docs/git-credential-store

https://git-scm.com/docs/git-credential-cache


Ini bekerja untuk saya setelah saya mengubah kata sandi saya di Github dan tidak mengubah kredensial saya secara lokal.
Scott

33

Jika Anda menemukan masalah kesalahan otentikasi ketika Anda memasukkan kata sandi dan nama pengguna yang benar, itu masalah git. Untuk menyelesaikan masalah ini ketika Anda menginstal git di mesin Anda, hapus centang pada manajer memungkinkan credit gitmasukkan deskripsi gambar di sini


1
Ini memperbaiki masalah saya
user1929819

tetap milikku juga. Terima kasih banyak!
Brian Edwards

Saya tidak menemukan solusi jenis ini. Saya telah menginstal ulang git
Hoque MD Zahidul

Memperbaiki masalah saya juga (git diinstal, cukup instal ulang yang tidak mencentang ini: dan tidak apa-apa!)
manatlan

1
Saya harus memeriksa "Gunakan pustaka Saluran Aman Windows asli" juga. Ini tidak dicentang secara default.
doptrois

25

Saya pikir untuk beberapa alasan GitHub mengharapkan URL TIDAK memiliki subdomain www. Ketika saya menggunakan (misalnya)

git remote set-url origin https://www.github.com/name/repo.git

itu memberikan pesan-pesan berikut:

remote: Anonymous access to name/repo.git denied
fatal: Authentication failed for https://www.github.com/name/repo.git

Namun, jika saya gunakan

git remote set-url origin https://github.com/name/repo.git

itu berfungsi dengan baik. Tidak masuk akal bagi saya ... tapi saya kira ingat untuk tidak meletakkan www di URL jauh untuk repositori GitHub.

Juga perhatikan URL klon yang disediakan pada halaman web repositori GitHub tidak termasuk www.


4
Tidak menempatkan "www" di "github.com" berfungsi. Karena itu penting, Github harus memperbaiki situs mereka sehingga Anda tidak dapat mengkloning menggunakan "www".
John Nagle

1
Terima kasih :) url saya kehilangan .git, dan komentar ini membuat saya melihatnya dan mencari tahu.

19

Hai, saya mendapatkan kesalahan yang sama saya mencoba semua solusi yang disebutkan di halaman ini, tetapi tidak berhasil. Akhirnya, saya menemukan solusinya, Jadi terpikir untuk mempostingnya. Harap perbaiki saya jika saya salah di mana saja. Jenis kesalahan ini muncul jika terkadang kata sandi sistem Anda telah berubah baru-baru ini kapan saja. Ini akan mencoba memvalidasi dari kata sandi lama. Jadi, Ikuti langkah-langkah ini:

  1. Buka panel kontrol
  2. Klik pada akun Pengguna
  3. Di bawah manajer Kredensial
  4. Pergi ke Kelola kredensial windows
  5. Pergi ke kredensial Generik
  6. Luaskan tab server git
  7. klik Hapus dari lemari besi

    • Anda juga dapat mengklik edit dan mengubah kata sandi Anda yang disimpan di sini secara langsung.

10

Saya telah menemukan "$ git fetch fatal: Otentikasi gagal untuk 'http: // ...." setelah kata sandi windows saya kedaluwarsa dan diubah. Banyak pengambilan, reboot, dan bahkan instal ulang git dengan windows credential manager tidak membantu.

Anehnya jawaban yang tepat di suatu tempat di sini dalam komentar tetapi tidak dalam jawaban (dan beberapa dari mereka benar-benar aneh!). Anda harus pergi ke Control panel -> Credential Manager / Windows Credentials dan memperbarui kata sandi Anda untuk git: http: // yourrepoaddress


9

Saya tidak begitu yakin apa yang saya lakukan untuk mendapatkan kesalahan ini, tetapi melakukan:

git remote set-url origin https://...

tidak bekerja untuk saya. Namun:

git remote set-url origin git@bitbucket.org:user/repo

entah bagaimana berhasil.


3
Anda beralih dari https ke ssh
James Wierzba

Ini juga bekerja untuk saya. Ini bukan sihir, itu karena saya telah menyimpan konfigurasi untuk akses ssh (dengan kunci publik yang dikonfigurasi), yang tidak diambil untuk akses https (yang merupakan user / pass + MFA).
Daniel Dubovski

8

Saya memiliki masalah yang sama. Saya mengatur url dengan cara itu:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

Saya juga dihapus dari file konfigurasi entri ini: askpass = /bin/echo. Lalu "git push" menanyakan nama pengguna dan kata sandi saya dan kali ini berhasil.


Saya tidak perlu menghapus dari file konfigurasi entri ini: askpass = /bin/echo.
Darius Miliauskas

5

Dalam kasus saya, saya baru-baru ini mengubah kata sandi windows saya dan saya memiliki kunci SSH yang dikonfigurasi untuk tindakan terkait git (pull, push, fetch dll.), Setelah saya menemukan kesalahan "fatal: Authentication gagal", saya memperbarui kata sandi saya di windows credential manager (Control Panel \ User Accounts \ Credential Manager) untuk semua item yang dimulai dengan git: ..., dan coba lagi, berfungsi kali ini!



3

Jika Anda telah mengaktifkan otentikasi dua faktor pada akun Github Anda, kemudian masuk ke akun GitHub Anda dan pergi ke: https://github.com/settings/tokens/new untuk menghasilkan token akses baru, salin token itu dan tempel sebagai kata sandi untuk otentikasi di terminal.


2

Jika Anda berada di windows dan mencoba mendorong ke server windows yang memiliki pengguna domain yang bekerja sebagai pengguna repositori (TFS), coba masuk ke TFS URL (yaitu http:\\tfs) dengan IE. masukkan kredensial akun domain Anda dan biarkan halaman muncul.

HATI-HATI hanya gunakan INTERNET EXPLORER! browser lain tidak akan mengubah kredensial sistem Anda.

Sekarang pergi ke git bash dan ubah pengguna jarak jauh Anda untuk repositori seperti di bawah ini:

git config user.name "domainName\userName"

Dan selesai, sekarang Anda bisa mendorong!


1

Bagi saya, saya lupa bahwa saya telah mengubah kata sandi di Github.com, dan gantungan kunci saya untuk otentikasi shell tidak pernah diperbarui ke kata sandi baru itu. Menghapus semua git dari gantungan kunci saya dan kemudian menjalankan kembali permintaan git membantu menyelesaikan masalah, meminta saya lagi untuk kata sandi baru.


1

Hanya untuk berpura-pura di sini, yang memperbaiki masalah bagi saya adalah saya hanya membatalkan keluar dari prompt awal, yang ssh dibuka dengan akun bitbucket saya, saya memasukkan kata sandi di sana dan semuanya bekerja seperti yang diharapkan.


1

Saya menghadapi masalah yang sama di windows. Sebagian besar waktu saya biasanya menghadapi masalah karena menggunakan beberapa akun git. Jika Anda berada di windows, silakan buka terminal sebagai administrator dan coba jalankan perintah lagi. Pastikan Anda memiliki hak akses administrator.


1

Saya menambahkan ke Bitbucket yang terhubung dengan Git dan harus menghapus kunci yang disimpan, karena ini menyebabkan kesalahan fatal.

Untuk menyelesaikannya, saya membuka command prompt dan berlari

 rundll32.exe keymgr.dll, KRShowKeyMgr

Saya menghapus kunci yang bertanggung jawab untuk masuk dan lain kali saya mendorong file ke repo, saya diminta untuk kredensial dan memasukkan yang benar, menghasilkan dorongan yang berhasil.


0

Saya juga mengalami kesalahan (itu sebabnya saya mendarat di sini), tetapi tidak ada saran yang bekerja untuk saya. Ini adalah pertama kalinya saya mencoba menyebarkan Git lokal ke biru. Ketika saya mendapatkan kesalahan ini, saya mengatur ulang kredensial saya (dengan mengklik tautan di Azure) setelah beberapa kali mencoba. Masalahnya adalah bahwa pada titik ini memberitahu saya nama pengguna saya sudah diambil, jadi saya juga mengubah nama pengguna saya ke yang lain. Pada akhirnya, saya secara manual menghapus folder .git di drive lokal saya, dan memindahkannya kembali tanpa masalah.


0

Pernyataan Masalah: "otentikasi git fatal gagal". Saya menggunakan bitbucket.

Solusi: Saya hanya menghapus pengguna dari menggunakan manajemen akses bitbucket dan kemudian menambahkan pengguna yang sama. File .gitconfig sederhana

[user]
    name = BlaBla
    email = blabla@gmail.com

[push]
    default = simple

0

dengan kredensial yang benar jika masalah terjadi

jika Anda menggunakan androidstudio 2.1 beta maka bug-nya, tingkatkan ke beta 2 (file pembaruan 3 mb), ini berhasil bagi saya



0

Pastikan bahwa kunci ssh Anda ditambahkan ke sesi ssh Anda saat ini.

  1. Salin output cat ~/.ssh/id_rsa.pubke pengaturan GitHub Anda di bawah kunci SSH dan GPG.

  2. Perbarui sesi ssh Anda saat ini dengan ssh-add ~/.ssh/id_rsa.pub

Saya menggunakan Windows Powershell dengan Openssh diinstal.


0

di Android studio canary build 3.1+, jika Anda menggunakan alat Android studio git, daripada yang dapat Anda gunakan sebagai berikut:

  • Klik pada Android Studio
  • Klik Preferensi ...
  • GO di VersionControl -> Github
  • Di sini Ubah tipe Auth ke Password
  • Langkah ini mengharuskan Anda memasukkan login dan kata sandi. Masukkan nama pengguna github Anda sebagai login dan kata sandi github sebagai kata sandi.
  • Klik pada Tombol Uji.

Jika koneksi berhasil, maka Anda sudah selesai dan Anda dapat menggunakan klien Android studio github UI.


0

Jika Anda menggunakan ssh dan diklon dengan https, ini tidak akan berfungsi. Mengkloning dengan ssh dan kemudian mendorong dan menarik harus bekerja seperti yang diharapkan!


0

Dalam hal ini sangat membantu, karena pertanyaan ini sekarang menjadi hit teratas untuk masalah otentikasi http dengan git: Windows Credential Manager telah menyimpan kata sandi saya dengan benar, dan karena saya menggunakan Git LFS saya mengkonfigurasi URL http alih-alih ssh biasa: / / .

Masalah saya adalah bahwa kebijakan kata sandi perusahaan saya memaksa perubahan kata sandi akun, tetapi saya tidak pernah memperbarui kredensial tersimpan saya (karena saya selalu menggunakan kunci ssh).

Cukup memperbarui kata sandi secara langsung di Wincred GUI yang berfungsi: cukup cari git:https://<your-url>entri.


0

Ini terjadi pada kami setelah memaksa "Otentikasi Dua Faktor" sebelum masuk dari Gitlab. Kami harus menempelkan teks di dalam id_rsa.pub ke Gitlab, dan kemudian memperkenalkan kembali repositori dalam kode VS menggunakan terminal.

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.