Visual Studio Code selalu meminta kredensial git

218

Saya mulai menggunakan Visual Studio Code , dan saya mencoba untuk menyimpan proyek pengujian saya ke GitHub , tetapi Visual Studio Code selalu meminta kredensial GitHub saya .

Saya telah menginstal di PC GitHub Desktop saya dan juga Git , saya sudah menjalankan:

 git config --global credential.helper wincred

tapi tetap saja Visual Studio Code meminta kredensial.

Ada bantuan?

di sini adalah file .gitconfig saya yang terletak di folfer profil pengguna:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = [email protected]
[credential]
    helper = wincred

Ini jendela sembulan yang meminta kredensial:

masukkan deskripsi gambar di sini

Saya memasukkan kredensial GitHub saya di popup, tetapi masih mendapatkan kesalahan ini di jendela output Git di Visual Studio Code :

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'
ddieppa
sumber
URL GItHub mana yang Anda gunakan? HTTP atau GIT (SSH)? Jika Anda menggunakan URL HTTP, Anda harus memasukkan pengguna dan kata sandi dalam URL. Anda lebih baik menggunakan URL GIT dan menambahkan kunci SSH publik Anda dalam daftar kunci SSH pengguna
yorammi
@yorammi Saya baru bekerja dengan git, jadi saya menginstal Github Desktop dan Git dan mencoba menyelamatkan proyek saya menggunakan Visual Studio Code, jadi saya tidak tahu apa yang saya sampaikan. Bagaimana saya tahu itu?
ddieppa
@ddieppa GitHub Desktop memiliki cara untuk bekerja dengan otentikasi dua faktor dengan koneksi https. Namun, itu merusak alat lain. Seperti jawaban yang dikatakan, Anda perlu sekarang mengubah URL asal dari https ke ssh.
Lex Li

Jawaban:

157

Terakhir diperbarui: 05 Maret, 2019

Setelah 98 upvotes, saya pikir saya perlu memberikan jawaban yang benar dengan penjelasannya.

Mengapa kode VS meminta kata sandi? Karena VSCode menjalankan fitur pengambilan otomatis, sementara server git tidak memiliki informasi untuk mengotorisasi identitas Anda. Itu terjadi ketika:

  • Repo git Anda sudah https url jarak jauh. Iya! Remote jenis ini pasti akan menanyakan Anda setiap saat. Tidak ada pengecualian di sini! (Anda dapat melakukan trik sementara untuk men-cache otorisasi sebagai solusi di bawah ini, tetapi ini tidak disarankan.)
  • Repo git Anda memiliki sslurl jarak jauh, TETAPI Anda belum menyalin kunci publik ssh ke server git. Gunakan ssh-keygenuntuk menghasilkan kunci Anda dan menyalinnya ke server git. Selesai! Solusi ini juga membantu Anda tidak pernah mengetik ulang kata sandi di terminal lagi. Lihat instruksi yang bagus dari @Fnatical di sini untuk jawabannya.

Bagian yang diperbarui pada akhir jawaban ini tidak benar-benar membantu Anda sama sekali. (Ini benar-benar membuat Anda mandek dalam alur kerja Anda.) Itu hanya menghentikan hal-hal yang terjadi di VSCode dan memindahkan kejadian ini ke terminal.

Maaf jika jawaban buruk ini mempengaruhi Anda untuk waktu yang sangat lama.

-

jawaban asli (buruk)

Saya menemukan solusi pada dokumen VSCode :

Kiat: Anda harus menyiapkan pembantu kredensial untuk menghindari diminta kredensial setiap kali VS Code berbicara dengan remote Git Anda. Jika Anda tidak melakukan ini, Anda mungkin ingin mempertimbangkan Menonaktifkan Ambil Otomatis dalam menu ... untuk mengurangi jumlah konfirmasi yang Anda dapatkan.

Jadi, nyalakan helper kredensial sehingga Git akan menyimpan kata sandi Anda di memori untuk beberapa waktu. Secara default, Git akan men-cache kata sandi Anda selama 15 menit.

Di Terminal, masukkan yang berikut ini:

git config --global credential.helper cache
# Set git to use the credential memory cache

Untuk mengubah batas waktu cache kata sandi default, masukkan yang berikut ini:

git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

UPDATE (Jika jawaban asli tidak berhasil)

Saya menginstal VS Code dan mengkonfigurasi yang sama di atas, tetapi seperti @ddieppa berkata, Itu tidak bekerja untuk saya juga. Jadi saya mencoba menemukan opsi di Pengaturan Pengguna, dan saya melihat "git.autofetch" = true, sekarang atur itu salah! Kode VS tidak lagi diperlukan untuk memasukkan kata sandi berulang kali lagi!

Dalam menu, klik File / Preferensi / Pengaturan Pengguna Dan ketik ini:

Tempatkan pengaturan Anda di file ini untuk menimpa pengaturan default

{
  "git.autofetch": false
}
Davuz
sumber
2
Saya mencobanya, tetapi tidak berhasil, saya bahkan menggunakan ini: $ git config - global credential.helper wincred
ddieppa
Sementara solusi pengambilan otomatis menghentikan masalah sembulan konstan, tetap memerlukan kredensial yang dimasukkan pada setiap push dan pull. Jika menggunakan PC dengan http / s, solusi pengelola kredensial di bawah berfungsi dengan baik.
ruttopia
3
hal-hal tidak boleh muncul jika Anda belum memulai tindakan, terutama hal-hal yang meminta kredensial - bagaimana Anda tahu ini aman dan bukan tipuan?
Anthony Johnston
7
Berhati-hatilah dengan pengaturan itu! Itu tidak dimaksudkan untuk membantu Anda mengingat kredensial Anda sama sekali. Ini berbicara tentang secara otomatis membantu Anda mengambil git. Silakan melihat atlassian.com/git/tutorials/syncing#git-fetch untuk detail lebih lanjut tentang itu. Sejauh menyimpan kredensial Anda, gunakan perintah git config --global credential.helper cache. Lihatlah git-scm.com/book/gr/v2/Git-Tools-Credential-Storage untuk detail lebih lanjut.
Grateful
7
Menyarankan agar Anda mematikan pengambilan otomatis baik-baik saja sebagai opsi "tinggalkan aku sendiri". Tapi itu sama dengan mengatakan "Jika perangkat lunak Anda tidak berfungsi, cukup gunakan saja." Penting bagi orang untuk menyadari perbedaannya. Saya akan menyarankan bahwa bagian "PEMBARUAN" dari jawaban ini mengatakan "JIKA TIDAK BEKERJA", dan jelaskan bahwa Anda bisa menghentikannya tanpa mengganggu Anda tanpa benar-benar memperbaiki masalah. Bagian dari jawaban di atas UPDATE sebenarnya benar (setidaknya, mengikuti tautan dokumentasi bekerja untuk saya)
Don
66

Anda harus dapat menetapkan kredensial Anda seperti ini:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

Anda bisa mendapatkan url jarak jauh seperti ini:

git config --get remote.origin.url

yohosuff
sumber
5
Jika saya memiliki @ dalam kata sandi saya, lalu apa yang akan menjadi url?
Suvonkar
Ini cara yang sangat bagus. Namun satu pertanyaan, di mana kredensial tersebut disimpan dalam sistem file lokal?
Teoman shipahi
1
Dalam file .git \ config.
yohosuff
juga perhatikan bahwa <PASSWORD> adalah opsional, jika Anda tidak ingin menyimpan kata sandi Anda ke disk lokal dan ingin terus diminta untuk itu.
Ben Barreth
Anda juga bisa menyediakan token akses pribadi untuk digunakan untuk kata sandi Anda, dengan cara ini Anda tidak mengekspos kata sandi akun asli Anda yang mungkin disimpan dalam plaintext. Anda juga dapat dengan mudah menghapus ketentuan jika Anda ingin atau jika Anda berpikir sistem Anda hilang atau terganggu.
CTS_AE
55

Ini telah berfungsi untuk saya:
1. Setel kredensial untuk menyimpan
$ git config --global credential.helper store
2. kemudian verifikasi jika Anda ingin:
$ git config --global credential.helper store

Contoh sederhana saat menggunakan git bash yang dikutip dari sini (hanya berfungsi untuk repo saat ini, gunakan --globaluntuk semua repo)

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: < type your username >
Password: < type your password >

[beberapa hari kemudian]
$ git push http://example.com/repo.git
[kredensial Anda digunakan secara otomatis]

Akan bekerja untuk Kode VS juga.

Contoh lebih rinci dan penggunaan lanjutan di sini .

Catatan: Nama pengguna & Kata Sandi tidak dienkripsi dan disimpan dalam format teks biasa jadi gunakan hanya di komputer pribadi Anda.

Vaibhav Vishal
sumber
2
Saya tidak tahu mengapa cache ini tidak mau bekerja untuk saya di ubuntu 18.04, dan kode vs. storemelakukannya.
D. Dan
1
sangat tidak aman. gunakan cache sebagai gantinya. jika komputer "pribadi" Anda diretas, kredensial git Anda mungkin juga diretas ..
Hypersoft Systems
1
cache menyimpan kredensial dalam memori, itu bukan solusi jangka panjang. Anda tidak harus memasukkan nama pengguna dan kata sandi setiap kali, tetapi Anda harus cukup sering memasukkannya.
Vaibhav Vishal
1
Saya suka jawaban ini yang terbaik. Saya tidak ingin dimintai nama pengguna / kata sandi setiap kali saya mendorong kode saya ke asal (yaitu GitLab) menggunakan VS Code
Sean McCarthy
Saya masih berpendapat bahwa metode ini tidak aman. kredit disimpan dalam file `~ / .git-credentials` yang dapat disalahgunakan ketika sistem dikompromikan. Perubahan yang lebih baik httpsuntuk sshdan gunakan tombol ssh sebagai alternatif.
Mohith7548
21

Langkah-langkah berikut memandu Anda melalui cara:

  1. Hasilkan kunci SSH (tanpa frasa sandi **)
  2. Tambahkan kunci publik yang dihasilkan di langkah 1 ke repositori Git Anda
  3. Konfirmasikan langkah-langkah di atas telah berhasil diselesaikan
  4. Buat komit pertama Anda (tanpa harus memberikan nama pengguna / kata sandi)

** Membuat kunci SSH tanpa frasa sandi tidak bijaksana jika pekerjaan Anda sangat sensitif.

OS - Fedora 28 | Editor - VS Code v1.23.0 | Repositori - Git

Hasilkan kunci SSH:

  • ssh-keygen -t rsa -C "[email protected]"
  • Masukkan file untuk menyimpan kunci : Tekan Enter
  • Masukkan frasa sandi : Tekan Enter
  • Masukkan frasa sandi yang sama lagi : Tekan Enter

Setelah menyelesaikan langkah-langkah di atas, lokasi kunci publik Anda ditampilkan di jendela terminal. Jika pengguna yang saat ini masuk adalah 'bob', lokasi kunci publik Anda adalah /home/bob/.ssh/id_rsa.pub

Salin dan impor kunci publik ke GitHub:

  • cat /home/bob/.ssh/id_rsa.pub

  • Salin seluruh kunci publik yang sekarang ditampilkan di jendela terminal Anda ke clipboard

  • Pergi ke https://github.com dan masuk
  • Klik ikon pengguna di sudut kanan atas layar dan pilih Pengaturan
  • Klik kunci SSH dan GPG
  • Klik kunci SSH Baru
  • Masukkan judul, rekatkan kunci publik yang disalin ke clipboard di poin pertama, dan klik Tambahkan kunci SSH

Konfirmasikan langkah-langkah di atas:

  • ssh -T [email protected]

  • yes

  • Hai! Anda telah berhasil mengautentikasi, tetapi GitHub tidak menyediakan akses shell.

Komit / push pertama tanpa harus memasukkan nama pengguna / kata sandi: -touch test.txt

  • git add test.txt

  • git commit- membuka editor, masukkan pesan, dan simpan file. Jika vi adalah editor Anda, tekan isetelah file dibuka, masukkan pesan, tekan esc, lalu masuk :xuntuk menyimpan perubahan.

  • git push

Satu-satunya masalah yang Anda temui adalah saat Anda mencoba SSH ke GitHub. Tautan ini akan memberikan bantuan -

Selamat berburu!

Fnatical
sumber
20

Coba instal " Git Credential Manager Untuk Windows " (dan ikuti instruksi untuk mengatur manajer kredensial ).

Ketika diperlukan dalam aplikasi menggunakan Git (mis. Kode VS) itu akan " ajaib " membuka dialog yang diperlukan untuk input kredensial Layanan Tim Visual Studio.

Anjing merah
sumber
3
Saya berharap ada "Manajer Kredensial Git untuk Linux" juga. Oh, tunggu aku ssh-agentsudah berlari . Tetapi VS Code tampaknya mengabaikan hal itu di Linux.
Berang,
ini solusi paling sederhana buat saya. dan itu bekerja dengan baik! terima kasih telah menunjukkan ini
dapidmini
20

Yang harus saya lakukan adalah menjalankan perintah ini:

git config --global credential.helper wincred

Kemudian saya diminta kata sandi dua kali.

Lain kali itu berfungsi tanpa meminta saya untuk kata sandi.

Pergi ke
sumber
2
Terima kasih! Masalah terpecahkan, dan ini juga !
Jeffrey Roosendaal
4
Di Ubuntu, gunakan storesebagai ganti wincred.
Cees Timmerman
1
Ini berhasil untuk saya! Anda juga dapat melakukan mis git config --global credential.helper 'cache --timeout==1209600'untuk membuatnya bertahan selama 2 minggu, bukan 15 menit default. Sumber: help.github.com/en/github/using-git/…
Andrew
1
^ Untuk lebih lanjut tentang ini, lihat di sini: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store akan menyimpannya secara permanen di disk. Juga, komentar saya sebelumnya memiliki kesalahan: jangan gunakan ==, gunakan =. Terlambat untuk mengedit.
Andrew
18

Gunakan ssh bukan http / https.

Anda perlu mengatur kunci ssh pada mesin lokal Anda, mengunggahnya ke server git Anda dan mengganti form url http://kegit:// dan Anda tidak perlu menggunakan password lagi.

Jika Anda tidak dapat menggunakan ssh, tambahkan ini ke konfigurasi Anda:

[credential "https://example.com"]
    username = me

dokumen ada di sini .


Menggunakan kunci ssh di github


Cukup ikuti langkah-langkah itu dan Anda akan mengatur kunci ssh Anda dalam waktu singkat:

  • Buat kunci ssh baru (atau lewati langkah ini jika Anda sudah memiliki kunci)
    ssh-keygen -t rsa -C "your@email"

  • Setelah Anda memasukkan kunci dalam home/.sshdirektori (atau di Users/<your user>.sshbawah windows), buka dan salin kontennya


Bagaimana cara menambahkan kunci sh ke akun github?

  • Masuk ke akun github
  • Klik pada pemilik peternakan di kanan atas (Pengaturan)
    setingan akun github
  • Klik pada SSH keys
    bagian kunci ssh
  • Klik pada Add ssh key
    Tambahkan kunci ssh
  • Rekatkan kunci Anda dan simpan

Dan Anda siap untuk pergi :-)

Panduan Kode
sumber
4
Anda juga harus memperjelas apa penyebab utamanya. Dalam kasus saya, karena saya telah mengaktifkan otentikasi dua faktor, maka SSH adalah satu-satunya cara untuk terhubung ke repo. Setiap koneksi https akan mengarah ke prompt seperti itu.
Lex Li
@codeWizard Saya tidak ingat persis apa yang terjadi tetapi VS Code bekerja dengan baik, maksud saya menghubungkan ke repo GitHub tanpa konfigurasi tambahan, saya pikir mungkin masalahnya adalah saya menginstal Git setelah Github Desktop, mungkinkah itu terjadi?
ddieppa
VC mungkin menyimpan kredensial secara internal dan setelah Anda menginstal ulang / meningkatkan git konfigurasi mungkin telah berubah. Saya bukan pengguna VC, saya seorang pria UNIX jadi saya tidak bisa mengujinya di komputer saya.
CodeWizard
3
@codeWizard VS Code adalah open source dan multi-platform, Anda dapat menjalankannya di Windows, MacOS atau Linux :), bekerja pada varian ssh dan melihat apa yang saya dapatkan
ddieppa
1
Tautan ke dokumentasi rusak.
Vishal
14

Secara umum, Anda dapat menggunakan fasilitas penyimpanan kredensial bawaan:

git config --global credential.helper store

Atau, jika Anda menggunakan Windows, Anda dapat menggunakan sistem kredensial mereka:

git config --global credential.helper wincred

Atau, jika Anda menggunakan MacOS, Anda dapat menggunakan sistem kredensial mereka:

git config --global credential.helper osxkeychain

Solusi pertama optimal dalam sebagian besar situasi.

Adam Erickson
sumber
6

Otentikasi Git otomatis . Dari Catatan Rilis v1.45 :

Otentikasi GitHub untuk Gudang GitHub

VS Code sekarang memiliki autentikasi GitHub otomatis terhadap repositori GitHub. Anda sekarang dapat mengkloning, menarik, mendorong ke dan dari repositori publik dan pribadi tanpa mengkonfigurasi manajer kredensial dalam sistem Anda. Bahkan perintah Git yang digunakan di Terminal Terpadu, misalnya dorongan git, sekarang secara otomatis diautentikasi dengan akun GitHub Anda.

Anda dapat menonaktifkan otentikasi GitHub dengan git.githubAuthenticationpengaturan. Anda juga dapat menonaktifkan integrasi otentikasi terminal dengan git.terminalAuthentication pengaturan.

Menandai
sumber
Bagus! Menonaktifkan kedua pengaturan ini di Linux (Ubuntu 18.04 + KDE Plasma) memperbaiki penanganan kredensial. Dua yang diaktifkan ini menimpa askpass = /usr/bin/ksshaskpasssaya .gitconfigdan sebagai hasilnya saya mendapatkan nama pengguna dan kata sandi yang diminta setiap saat. Ini mungkin akan lebih ditingkatkan karena versi 1.45 peran di lebih banyak mesin.
Andrei Sinitson
4

Untuk windows 10: buka panel kontrol / Manajer Kredensial / Kredensial Windows -> klik pada tautan git, -> edit -> perbarui kata sandi baru. Itu seharusnya bekerja

Meera
sumber
2

Gunakan kunci SSH tanpa frasa sandi.

Mungkin ini jelas bagi sebagian orang (bukan bagi saya). Ini juga tidak menyelesaikan masalah jika Anda benar-benar memerlukan frasa sandi, tetapi ini adalah kompromi yang layak dalam situasi saya di Mac.

adampfoster
sumber
2

Setelah berkelahi dengan hal seperti ini sebentar, saya pikir saya menemukan solusi yang baik, terutama ketika memiliki banyak akun di GitHub dan BitBucket. Namun untuk VSCode, akhirnya berakhir sebagai memulainya dari terminal Git Bash sehingga mewarisi variabel lingkungan dari sesi bash dan ia tahu agen ssh mana yang harus dilihat.

Saya menyadari ini adalah posting lama tapi saya masih benar-benar berjuang untuk menemukan satu tempat untuk mendapatkan info yang saya butuhkan. Plus sejak 2017, ssh-agent mendapatkan kemampuan untuk meminta Anda untuk frasa sandi hanya ketika Anda mencoba mengakses repo.

Saya meletakkan temuan saya di sini jika ada yang tertarik:

ScubaManDan
sumber
1

Mengikuti artikel itu :

Anda bisa mengatur GIT_SSH env. var. untuk program plink.exe Putty. (Kemudian gunakan pageant.exe sebagai agen autentikasi)

Paul Paku
sumber
1

Selesaikan masalah dengan mengikuti langkah-langkah.

Perangkat lunak yang tidak diinstal Vscode dan git dan instal ulang yang sama. Mengubah url git repositori git dari ssh ke https.

Sundar
sumber
1

Saya punya masalah serupa dalam Visual Studio Code.

Saya dipecahkan dengan mengubah url jarak jauh ke https . (dalam file .git / config)

[remote "origin"]
    url = https://[email protected]/plesk-git/project.git

dan juga

git config --global credential.helper wincred

ditarik lagi, popup kredensial windows keluar, masalah diselesaikan.

Vland
sumber
0

Bagi saya, saya telah mengatur repo jarak jauh saya dengan kunci SSH tetapi git tidak dapat menemukannya karena variabel lingkungan HOMEDRIVE secara otomatis disetel ke pangsa jaringan karena kebijakan domain perusahaan saya. Mengubah variabel lingkungan di shell saya sebelum meluncurkancode . menyebabkan VSCode mewarisi variabel lingkungan yang benar dan tidak ada lagi kesalahan koneksi di jendela output git.

Sekarang saya hanya perlu mencari cara untuk mengganti kebijakan domain sehingga HOMEDRIVE selalu menunjuk ke c:\users\marvhendirektori lokal saya yang merupakan lokasi default untuk .sshdirektori.

marvhen
sumber
0

Saya berhasil menghentikan ini dengan melakukan langkah-langkah berikut.

  1. Copot Git Desktop (Tidak yakin ini perlu)
  2. Copot Pengelola Kredensial cd "C:\Program Files\Git\mingw64\libexec\git-core"diikuti olehgit-credential-manager.exe uninstall
  3. Atur ulang pembantu kredensial untuk menggunakan wincred git config --global credential.helper wincred
  4. Kode VS Pengguna untuk Mendorong beberapa perubahan dan memasukkan kembali kredensial.

CATATAN: Saya menggunakan Token Akses Pribadi sebagai kata sandi saya.

Mick
sumber
0

Saya memecahkan masalah serupa dengan cara sederhana:

  1. Pergi ke CMD atau Terminal
  2. Tipe git pull origin master . Ganti 'asal' dengan nama Remote Anda
  3. Itu akan meminta kredensial. Ketik ini.

Itu saja. Saya memecahkan masalah

Avinash
sumber
0

selain menambahkan entri konfigurasi ssh di atas

jika windows

Set-Service ssh-agent -StartupType Automatic 

di PowerShell sekarang kode vs seharusnya tidak meminta ...

ubreddy
sumber
0

untuk windows 10 tekan windows key type cred dan Anda akan melihat "Credential Manager" di Control Panel klik untuk membuka dan kemudian menghapus kredensial yang di-cache terkait lalu coba lagi, itu akan meminta kunci kata sandi id pengguna dengan kata sandi yang benar dan Anda akan lebih baik .

Terjadi dengan saya ketika saya mengubah kata sandi jaringan saya

Rohit Paliwal
sumber
0

Saya biasanya menjalankan perintah sederhana ini untuk mengubah url remote git dari https ke ssh

git remote set-url origin [email protected]:username/repo-name-here.git
Ahmad
sumber