Saya mengkloning repositori Git dari akun GitHub saya ke PC saya.
Saya ingin bekerja dengan PC dan laptop saya, tetapi dengan satu akun GitHub.
Ketika saya mencoba untuk mendorong atau menarik dari GitHub menggunakan PC saya, itu membutuhkan nama pengguna dan kata sandi, tetapi tidak ketika saya menggunakan laptop!
Saya tidak ingin mengetik nama pengguna dan kata sandi saya setiap kali berinteraksi origin
. Apa yang kulewatkan di sini?
Jawaban:
Penyebab umum adalah kloning menggunakan default (HTTPS) bukan SSH. Anda dapat memperbaikinya dengan masuk ke repositori Anda, mengklik "Klon atau unduh", lalu mengklik tombol "Gunakan SSH" di atas bidang URL dan memperbarui URL remote asal Anda seperti ini:
Ini didokumentasikan di GitHub: Mengubah URL jarak jauh dari HTTPS ke SSH .
sumber
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:[email protected]/repo.git
(diekstrak dari komentar di sini)Permission denied (publickey)
menggunakan panduan ini: help.github.com/articles/generating-ssh-keys .Mengotentikasi secara permanen dengan repositori Git
Jalankan perintah berikut untuk mengaktifkan caching kredensial :
Anda juga harus menentukan caching kedaluwarsa ,
Setelah mengaktifkan cache kredensial, itu akan di-cache selama 7200 detik (2 jam) .
sumber
git remote set-url origin https://[email protected]/<owner>/<repo>.git
Ini juga berfungsi dengan 2FAfatal: protocol 'https' is not supported
Saya baru saja menemukan masalah yang sama, dan solusi paling sederhana yang saya temukan adalah menggunakan URL SSH alih-alih HTTPS satu:
Dan bukan ini:
Anda sekarang dapat memvalidasi hanya dengan kunci SSH alih-alih
username
danpassword
.sumber
Selain mengubah ke SSH Anda juga dapat terus menggunakan HTTPS, jika Anda tidak keberatan memasukkan kata sandi Anda dalam teks yang jelas. Masukkan ini ke Anda
~/.netrc
dan tidak akan menanyakan nama pengguna / kata sandi Anda (setidaknya di Linux dan Mac):Tambahan (lihat komentar kedua VonC): pada Windows nama filenya
%HOME%\_netrc
.Baca juga komentar pertama VonC jika Anda ingin mengenkripsi.
Tambahan lain (lihat komentar pengguna137717) yang dapat Anda gunakan jika Anda memiliki Git 1.7.10 atau yang lebih baru .
Tembolok kata sandi GitHub Anda di Git menggunakan bantuan kredensial :
Ini juga berfungsi di Linux, Mac, dan Windows.
sumber
%HOME%\_netrc
(bukan~/.netrc
). Lihat juga stackoverflow.com/a/18362082/6309 untuk mengenkripsi file itu.Untuk yang belum tahu yang bingung dengan jawaban sebelumnya, Anda dapat melakukan:
Yang akan merespons dengan sesuatu seperti
Kemudian Anda dapat menjalankan perintah yang disarankan banyak orang, tetapi sekarang Anda tahu nama dan laporan Anda dari atas, sehingga Anda bisa memotong dan menempelkan
yourname/yourrepo.git
dari atas ke:sumber
paraphrase
setiap kali. Saya tidak membuat satuyourrepo
?git remote -v
dan lihat apa yang keluarJika Anda menggunakan SSH dan kunci pribadi Anda dienkripsi dengan frasa sandi, maka Anda masih akan diminta untuk memasukkan passphrase / password untuk kunci pribadi ketika Anda melakukan operasi jaringan dengan Git seperti
push
,pull
, danfetch
.Gunakan ssh-agent untuk menyimpan frasa sandi / kredensial kunci pribadi
Jika Anda ingin menghindari keharusan memasukkan kata sandi Anda setiap waktu, Anda dapat menggunakan
ssh-agent
untuk menyimpan kredensial kata sandi kunci pribadi Anda satu kali per sesi terminal, seperti yang saya jelaskan dalam jawaban saya untuk Tidak dapat membuka koneksi ke agen otentikasi Anda :Dalam Bash msysgit Windows, Anda perlu mengevaluasi output
ssh-agent
, tetapi saya tidak yakin apakah Anda perlu melakukan hal yang sama di lingkungan pengembangan lain dan sistem operasi.ssh-add
mencari kunci pribadi di.ssh
folder rumah Anda yang disebutid_rsa
, yang merupakan nama default, tetapi Anda bisa meneruskan file ke kunci dengan nama yang berbeda.Membunuh agen
Setelah selesai dengan sesi terminal Anda, Anda dapat mematikan
ssh-agent
dengan bendera kill-k
:Seperti yang dijelaskan dalam
ssh-agent
manual :Batas waktu opsional
Selain itu, dapat mengambil parameter batas waktu opsional seperti:
di mana
<timeout>
adalah format<n>h
untuk<n>
jam,<n>m
untuk<n>
menit, dan seterusnya.Menurut
ssh-agent
manual :Lihat halaman ini untuk format waktu lebih banyak .
Peringatan keamanan untuk pengguna Cygwin
Pengguna Cygwin harus mengetahui potensi risiko keamanan dengan menggunakan ssh-agent di Cygwin :
Dan di tautan yang dikutip :
sumber
Sumber: Mengatur Git
Perintah berikut akan menyimpan kata sandi Anda di memori untuk beberapa waktu (untuk Git 1.7.10 atau yang lebih baru).
sumber
Saat Anda menggunakan https untuk Git pull & push, cukup konfigurasikan
remote.origin.url
untuk proyek Anda, untuk menghindari input nama pengguna (atau / dan kata sandi) setiap kali Anda mendorong.Cara mengkonfigurasi
remote.origin.url
:@ Perbarui - gunakan
ssh
Saya pikir menggunakan
ssh
protokol adalah solusi yang lebih baik daripadahttps
, meskipun langkah pengaturannya sedikit lebih kompleks.Langkah kasar:
ssh-keygen
di Linux, di windowsmsysgit
menyediakan perintah serupa.~/.ssh
,. Dan menambahkannya ke agen ssh viassh-add
perintah.remote.origin.url
repositori Git kessh
gaya, misalnya,[email protected]:myaccount/myrepo.git
Kiat:
@ Perbarui - Beralih antara
https
danssh
protokol.Cukup mengubah
remote.origin.url
akan cukup, atau Anda dapat mengeditrepo_home/.git/config
langsung untuk mengubah nilai (misalnya menggunakanvi
di Linux).Biasanya saya menambahkan baris untuk setiap protokol, dan berkomentar salah satunya menggunakan
#
.Misalnya
sumber
git-fetch(1)
menyebutkan bahwa hanya untukgit
/ssh
-berbasis URL.https://username:[email protected]/
aman. Lihat stackoverflow.com/questions/4980912/…Anda dapat men-cache kata sandi GitHub Anda di Git:
Cukup ikuti instruksi dari dokumentasi resmi GitHub .
Setelah mengikuti instruksi dari tautan di atas, Anda seharusnya dapat mendorong / menarik ke / dari repositori Anda tanpa harus mengetik nama pengguna / kata sandi Anda setiap saat.
sumber
Ini pilihan lain:
Alih-alih menulis
Anda bisa menulis:
Jelas, dengan sebagian besar shell ini akan mengakibatkan kata sandi di-cache dalam sejarah, jadi ingatlah itu.
sumber
Apa yang berhasil bagi saya adalah mengedit
.git/config
dan menggunakanTak perlu dikatakan bahwa ini adalah cara yang tidak aman untuk menyimpan kata sandi Anda tetapi ada lingkungan / kasus di mana ini mungkin tidak menjadi masalah.
sumber
Jika kunci atau
.netrc
file SSH tidak berfungsi untuk Anda, maka solusi sederhana namun kurang aman lainnya, yang dapat bekerja untuk Anda adalah git-credential-store - Membantu menyimpan kredensial pada disk:Secara default, kredensial akan disimpan dalam file
~/.git-credentials
. Ini akan dibuat dan ditulis untuk.Harap dicatat menggunakan helper ini akan menyimpan kata sandi Anda tidak terenkripsi di disk, hanya dilindungi oleh izin sistem file. Jika ini mungkin bukan tradeoff keamanan yang dapat diterima.
sumber
Saya memiliki masalah yang sama.
Jadi saya mengubah
.git/config
file dari proyek saya,untuk
dan menambahkan kunci publik SSH ke profil Git yang ada di pengaturan.
Untuk kunci publik SSH:
sumber
cat ~/.ssh/id_rsa.pub
mendapatkan kunci rsa dan rekatkan di pengaturan portal web git.Pembaruan untuk HTTPS:
GitHub telah meluncurkan program baru untuk Windows yang menyimpan kredensial Anda saat Anda menggunakan HTTPS:
Menggunakan:
Unduh programnya dari sini
Setelah Anda menjalankan program, itu akan mengedit
.gitconfig
file Anda . Periksa kembali apakah sudah diedit dengan benar.gitconfig
jika Anda memiliki beberapa di antaranya. Jika tidak mengedit yang benar, tambahkan berikut ini ke.gitconfig
Perhatikan garis putus setelah
[credential]
. Itu wajib.Buka klien baris perintah Anda dan coba
git push origin master
sekali. Jika Anda meminta kata sandi, masukkan dan Anda selesai. Kata sandi disimpan!sumber
Untuk pengguna Windows Git, setelah menjalankan
git config --global credential.helper store
, jika masih meminta kata sandi, Anda sebaiknya memeriksa ke mana file konfigurasi ditulis, menggunakan perintah iniDalam kasus saya, setelah mengedit secara manual file konfigurasi 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig', dan menambahkan teks berikut, itu berhasil.
sumber
Anda pada dasarnya memiliki dua opsi.
Jika Anda menggunakan pengguna yang sama di kedua mesin, Anda perlu menyalin kunci .pub ke PC Anda, jadi GitHub tahu bahwa Anda adalah pengguna yang sama.
Jika Anda telah membuat file .pub baru untuk PC Anda dan ingin memperlakukan mesin sebagai pengguna yang berbeda, Anda harus mendaftarkan file .pub baru di situs web GitHub.
Jika ini masih tidak berhasil mungkin karena ssh tidak dikonfigurasi dengan benar dan ssh gagal menemukan lokasi kunci Anda. Mencoba
Untuk mendapatkan informasi lebih lanjut mengapa SSH gagal.
sumber
Memperbarui file konfigurasi Git Anda secara langsung ( jika Anda tidak ingin mengingat perintah mewah ):
Buka
.git/config
file Anda di editor teks favorit Anda. Itu akan berada di folder yang Anda kloning atau di repositori yang Anda lakukangit init
masuk ke repositori itu..git
adalah folder tersembunyi, dan menekan Ctrl+ Hakan menampilkan folder tersembunyi, (ls -a
dalam terminal).Di bawah ini adalah contoh
.git/config
file. Salin dan tempel baris ini dan pastikan untuk memperbarui baris tersebut dengan informasi Git Anda.Ubah bagian URL dengan format berikut untuk SSH:
( Format di atas tidak berubah dengan berbagai server jarak jauh Git seperti GitHub atau Bitbucket. Ini sama jika Anda menggunakan Git untuk kontrol versi ):
Catatan: Cara SSH menghubungkan ke repositori Git jarak jauh akan mengharuskan Anda untuk menambahkan kunci SSH publik Anda ke server jarak jauh Git Anda ( seperti GitHub atau Bitbucket. Cari halaman pengaturan untuk kunci SSH ).
Untuk mengetahui cara membuat kunci SSH Anda, lihat: Membuat kunci SSH
sumber
Inilah yang bekerja untuk saya:
Contoh:
sumber
Anda perlu melakukan dua langkah -
git remote remove origin
git remote add origin [email protected]:NuggetAI/nugget.git
Perhatikan bahwa URL Git adalah URL SSH dan bukan URL HTTPS ... Yang dapat Anda pilih dari sini:
sumber
Jika Anda telah mengkloning HTTPS alih-alih SSH dan menghadapi masalah dengan nama pengguna dan kata sandi, tarik, tekan, dan ambil. Anda dapat memecahkan masalah ini hanya untuk UBUNTU
Langkah 1: pindah ke direktori root
buat file .git-kredensial
Tambahkan konten ini ke file itu dengan Anda
usename
password
dangithosting URL
Kemudian jalankan perintah
Sekarang Anda akan dapat menarik push dan mengambil semua detail dari repo Anda tanpa kerumitan.
sumber
Jika Anda menggunakan Git (misalnya, Git Bash) di Windows (dan jika Anda tidak ingin beralih dari HTTPS ke SSH), Anda juga bisa menggunakan Git Credential Manager untuk Windows
Aplikasi ini akan menyimpan nama pengguna dan kata sandi untuk Anda ...
sumber
Seperti yang dikatakan banyak pengguna, Anda hanya perlu mengubah URL repositori Git Anda dari HTTPS ke SSH.
Jika Anda belum membuat kunci SSH di mesin Anda, maka Anda harus melakukannya.
Sama seperti informasi tambahan, setelah melakukan perubahan ini saya masih mendapatkan kesalahan yang sama:
Dalam kasus saya, masalahnya adalah saya menggunakan Windows Shell untuk menjalankan perintah ngh; karena perintah ini harus membuka prompt untuk meminta frase SSH dan Windows Shell tidak membuka prompt semacam ini, otentikasi gagal.
Jadi, saya hanya perlu membuka shell Git dan mengeksekusi perintah ngh di sana, memasukkan frasa SSH di prompt setiap kali meminta dan "voilà" ... Itu hanya bekerja dengan baik!
sumber
sumber
Jika Anda mengaktifkan 2FA di akun Github Anda, kata sandi Anda yang biasa tidak akan berfungsi untuk tujuan ini, tetapi Anda dapat menghasilkan Token Akses Pribadi dan menggunakannya sebagai gantinya.
Kunjungi halaman
Settings
->Developer Settings
->Personal Access Tokens
di GitHub ( https://github.com/settings/tokens/new ), dan hasilkan Token baru dengan semua izin Repo :Halaman kemudian akan menampilkan nilai token baru. Simpan nilai ini dan gunakan sebagai ganti kata sandi Anda saat mendorong ke repositori Anda di GitHub:
sumber