Saya sudah menggunakan Git untuk sementara waktu sekarang, tetapi permintaan terus-menerus untuk kata sandi mulai membuat saya bingung.
Saya menggunakan Mac OS X dan GitHub, dan saya mengatur Git dan kunci SSH saya seperti yang diperintahkan oleh halaman Set Up Git GitHub .
Saya juga menambahkan kunci SSH github ke gantungan kunci Mac OS X saya, sebagaimana disebutkan pada halaman frasa sandi SSH GitHub . Kunci publik saya terdaftar di Git.
Namun demikian, setiap kali saya mencoba Git pull, saya harus memasukkan nama pengguna dan kata sandi saya. Apakah ada sesuatu selain kunci SSH yang perlu saya atur untuk ini?
netrc
'. Lihat contoh lengkap di sini .Jawaban:
Saya pikir Anda mungkin memiliki URL repositori Git yang salah.
Buka
.git/config
dan temukan bagian [remote "origin"]. Pastikan Anda menggunakan SSH:Anda dapat melihat URL SSH di halaman utama repositori Anda jika Anda mengklik Kloning atau mengunduh dan memilih ssh .
Dan BUKAN
https
ataugit
satu:Anda sekarang dapat memvalidasi hanya dengan kunci SSH daripada nama pengguna dan kata sandi.
Jika Git mengeluh
'origin' has already been added
, buka.config
file dan editurl = "..."
bagian setelahnya[remote origin]
sebagaiurl = ssh://github/username/repo.git
Hal yang sama berlaku untuk layanan lain. Pastikan alamatnya terlihat seperti:
protocol://something@url
Misalnya
.git/config
untuk Azure DevOps:sumber
[remote "origin"]
set bagianurl = ssh://[email protected]/username/Repo.git
. Itu berhasil bagi saya.url = [email protected]:organization/Repo.git
berhasil. +1 untuk menuntun saya ke jalan yang benar! Keberhasilan!Konfigurasikan kredensial.bantuan
Pada OS X (sekarang macOS), jalankan ini di Terminal :
Ini memungkinkan Git untuk menggunakan file Keychain.app untuk menyimpan nama pengguna dan kata sandi dan untuk mengambil frasa sandi ke kunci SSH pribadi Anda dari gantungan kunci.
Untuk penggunaan Windows:
Penyelesaian masalah
Jika pembantu kredensial Git dikonfigurasi dengan benar, macOS menyimpan frasa sandi di gantungan kunci. Terkadang koneksi antara SSH dan frasa sandi yang disimpan dalam gantungan kunci dapat terputus. Jalankan
ssh-add -K
ataussh-add ~/.ssh/id_rsa
untuk menambahkan kunci ke gantungan kunci lagi.macOS v10.12 (Sierra) berubah menjadi ssh
Untuk macOS v10.12 (Sierra),
ssh-add -K
perlu dijalankan setelah setiap reboot. Untuk menghindari ini, buat~/.ssh/config
dengan konten ini.Dari
ssh_config
man
halaman pada 10.12.2:Apple telah menambahkan Technote 2449 yang menjelaskan apa yang terjadi.
sumber
.netrc
metode file yang menempatkan kata sandi Anda dalam plaintext.'credential-osxkeychain' is not a git command.
karena saya tidak memiliki pembantu kredensial yang diinstal. Saya mengikuti instruksi di sini untuk menginstalnya: help.github.com/articles/set-up-git#password-cachinggit config --global credential.helper osxkeychain
file konfigurasi di.ssh
direktori saya memperbaikinya.Ini terjadi pada saya ketika saya memutakhirkan ke macOS v10.12 (Sierra). Sepertinya agen SSH dihapus saat peningkatan.
Cukup menjalankan
ssh-add
menemukan identitas saya yang ada. Saya memasukkan kata sandi dan baik untuk pergi lagi.sumber
Gunakan ini: Ganti github.com dengan nama host yang sesuai
sumber
git remote -v
. Namun, saya masih dimintai kata sandi.git@**
tidak meminta kredensial dan URL denganhttps@**
:). Jadi saya menemukan dokumen ini .Seperti yang dikatakan orang lain, Anda dapat menginstal pembantu cache kata sandi. Saya kebanyakan hanya ingin memposting tautan untuk platform lain, dan bukan hanya Mac. Saya menjalankan server Linux dan ini sangat membantu: Caching kata sandi GitHub Anda di Git
Untuk Mac:
Windows:
Linux:
sumber
Cari juga siapa yang meminta kata sandi Anda. Apakah itu Git atau agen SSH Anda?
Dalam kasus saya, setiap kali saya melakukannya
git pull
, saya bertanya:Enter passphrase for key '/work/username/.ssh/id_rsa':
Jadi saya berasumsi bahwa itu adalah Git yang meminta kata sandi. Jadi saya terus mencari solusi, baru kemudian menyadari bahwa agen SSH saya sudah tutup. Yang bisa diperbaiki menggunakan
eval $(ssh-agent)
danssh-add
seperti yang diberikan di sini.Saya juga menempelkan di bawah potongan kecil yang dapat Anda tambahkan ke
~/.bashrc
file Anda (atau yang setara) untuk memastikan bahwa agen SSH Anda dimulai pada login Anda.Bagaimanapun, ini adalah kesalahan konyol yang saya buat, tetapi mempostingnya di sini, kalau-kalau itu membantu seseorang menghemat waktu dari menggonggong pohon yang salah, seperti yang saya lakukan.
sumber
SSH_ENV="$HOME/.ssh/environment"
Catatan: Meskipun ini mudah, Git akan menyimpan kredensial Anda dalam teks yang jelas dalam file lokal (.git-kredensial) di bawah direktori proyek Anda (lihat di bawah untuk direktori "home"). Jika Anda tidak suka ini, hapus file ini dan alihkan untuk menggunakan opsi cache.
Jika Anda ingin Git melanjutkan untuk meminta kredensial setiap kali perlu terhubung ke repositori jarak jauh, Anda dapat menjalankan perintah ini:
Untuk menyimpan kata sandi di .git-kredensial di direktori% HOME% Anda sebagai lawan dari direktori proyek: gunakan flag --global
sumber
Panduan untuk Git di Windows dan GitHub menggunakan SSH untuk mendorong / menarik: Panduan Illustrated untuk Git di Windows
sumber
Di Windows for Git 1.7.9+, jalankan perintah berikut pada prompt perintah untuk membuka file konfigurasi di editor teks:
Kemudian dalam file, tambahkan blok berikut jika tidak ada atau edit sesuai:
Simpan dan tutup file. Anda harus memberikan kredensial hanya sekali setelah perubahan di atas.
sumber
Gunakan perintah berikut untuk menambah periode waktu habis sehingga Anda dapat mengetik ulang kata sandi untuk sementara waktu
Saya menggunakannya untuk Bitbucket dan GitHub berfungsi untuk keduanya. Satu-satunya hal yang perlu Anda lakukan
3600
adalah dalam hitungan detik. Tingkatkan sejauh apa pun yang Anda inginkan. Saya mengubahnya menjadi259200
sekitar 30 hari. Dengan cara ini saya memasukkan kembali kata sandi saya untuk setiap 30 hari atau lebih.sumber
Saya kira Anda sudah memperbaiki masalah Anda, tetapi saya tidak melihat solusi di sini yang membantu saya, jadi inilah dia.
Ketik terminal:
Itu akan mengosongkan
known_hosts
file Anda , dan Anda harus menambahkan setiap host yang Anda gunakan dan telah terhubung, tetapi itu memecahkan masalah.sumber
cat /dev/null > ~/.ssh/known_hosts
akan melakukan hal yang sama.> ~/.ssh/known_hosts
bahkan lebih pendek :)Saya merasa seperti jawaban yang diberikan oleh static_rtti dalam beberapa hal hacky. Saya tidak tahu apakah ini tersedia sebelumnya, tetapi alat Git sekarang menyediakan penyimpanan kredensial.
Mode Cache
Gunakan mode "cache" untuk menyimpan kredensial dalam memori selama periode waktu tertentu. Tidak ada kata sandi yang pernah disimpan di disk, dan dihapus dari cache setelah 15 menit.
Mode Toko
Gunakan mode "store" untuk menyimpan kredensial ke file teks biasa pada disk, dan kredensial mereka tidak pernah berakhir.
Saya pribadi menggunakan mode toko . Saya menghapus repositori, mengkloningnya, dan kemudian harus memasukkan kredensial saya sekali.
Referensi: 7.14 Git Tools - Penyimpanan Kredensial
sumber
credential.helper cache
TIDAK berfungsi. Seharusnya begitugit config --global credential.helper wincred
.git config --local credential.helper store
. Dalam kasus saya, saya menggunakan HTTPS, dengan cara ini saya hanya mengetik nama pengguna / kata sandi satu kali dan setelah itu, kredensial saya digunakan kembali dari ~ / .git-kredensialjawaban orkoden tentang menggunakan gantungan kunci dengan Git di terminal Anda tidak lengkap dan menimbulkan kesalahan. Inilah yang harus Anda lakukan untuk menyimpan nama pengguna dan kata sandi yang Anda masukkan di terminal di gantungan kunci Anda:
Lalu masuk
Jika Anda telah melakukan bagian dengan konfigurasi Git sebelum hal-hal keriting, itu tidak masalah; ini akan bekerja.
sumber
Seperti static_rtti katakan di atas, ubah
untuk
Saya sendiri mengubah
https
file .git / config menjadissh
, tetapi masih tidak berfungsi. Lalu saya melihat bahwa Anda harus berubahgithub.com
menjadi[email protected]
. Cara yang baik untuk mendapatkan URL yang benar adalah pergi ke halaman proyek Anda dan klik ini:Ubah HTTPS ke SSH untuk mendapatkan URL yang benar
Kemudian tambahkan URL ini ke file konfigurasi.
sumber
Pada Windows Subsystem untuk Linux (WSL) ini adalah satu-satunya solusi yang saya temukan berfungsi:
eval
`ssh-agent`; ssh-add ~/.ssh/id_rsa
Itu adalah masalah dengan ssh-agent tidak terdaftar dengan benar di WSL.
sumber
Jika Anda ingin menghentikan Git agar selalu meminta kredensial masuk dari repositori GitHub Anda, ini bisa dilakukan dengan mudah.
Menggunakan SSH bukan HTTPS
Anda dapat memperbarui remote asal menggunakan SSH daripada HTTPS "
Konfigurasikan Git untuk Menyimpan Kata Sandi dan Nama Pengguna Anda
Inilah cara Anda membuat Git menyimpan nama pengguna dan kata sandi:
Selanjutnya, simpan nama pengguna dan kata sandi untuk satu sesi:
sumber
Saya setuju dengan "codehugger" dan menggunakan instruksi "orkoden" itu berfungsi untuk saya - di NetBeans 7.3 - ketika Anda mengklik kanan pada file dan memilih menu konteks - push - a 'push to remote' window dibuka - ada dua pilihan di sini:
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Seperti yang Anda lihat, perbedaannya adalah parameter asal di URL - Anda tidak ingin memilih opsi ini (1) Anda ingin memeriksa opsi (2), dan itu berfungsi dengan baik untuk saya.
sumber
Langkah 1: periksa konfigurasi Anda saat ini
Kamu akan mendapatkan:
Langkah 2: hapus asal remote Anda
Langkah 3: tambahkan asal yang jauh dengan nama pengguna dan kata sandi Anda
sumber
git branch --set-upstream master origin/master
Jika Git meminta nama pengguna dan kata sandi setiap kali Anda mencoba berinteraksi dengan GitHub, Anda mungkin menggunakan URL klon HTTPS untuk repositori Anda.
Menggunakan HTTPS remote URL memiliki beberapa keuntungan: lebih mudah diatur daripada SSH, dan biasanya bekerja melalui firewall dan proxy yang ketat. Namun, itu juga meminta Anda untuk memasukkan kredensial GitHub Anda setiap kali Anda menarik atau mendorong repositori.
Anda dapat mengkonfigurasi Git untuk menyimpan kata sandi Anda. Untuk Windows :
sumber
Menjalankan macOS Cataline 10.15, metode caching gantungan kunci tidak berfungsi untuk saya. Dan saya ingin
https://
tidak menggunakannyassh
Inilah yang bekerja untuk saya:
Ini juga bisa digunakan pada GitLab
Pastikan jika nama pengguna berisi alamat email, untuk menghapus
@email
bagian atau Anda akan mendapatkan kesalahan yang menyatakanURL using bad/illegal format or missing URL
.Semoga ini membantu!
sumber
Ada berbagai jenis otentikasi tergantung pada konfigurasi Anda. Berikut ini beberapa di antaranya:
git credential-osxkeychain
.Jika kredensial Anda tidak valid, hapus dengan:
atau:
Jadi Git tidak akan meminta izin gantungan kunci lagi. Kemudian konfigurasikan lagi.
Lihat: Memperbarui kredensial dari Keychain OS X di GitHub
Kunci SSH RSA Anda.
Untuk ini, Anda perlu membandingkan kunci SSH Anda dengan apa yang Anda tambahkan, periksa dengan
ssh-add -L
/ssh-add -l
jika Anda menggunakan identitas yang benar.Otentikasi HTTPS Anda (jika Anda menggunakan
https
alih-alihssh
protokol).Gunakan
~/.netrc
(%HOME%/_netrc
pada Windows), untuk memberikan kredensial Anda, misPelajari lebih lanjut: Menyinkronkan dengan GitHub di Stack Overflow.
sumber
Sebelum Anda dapat menggunakan kunci dengan GitHub, ikuti langkah ini di tutorial, Menguji koneksi SSH Anda :
sumber
Memiliki salah ketik di URL akan membuat Git meminta nama pengguna dan kata sandi Anda, Git bodoh.
Itu diuji di Kali Linux , Git versi 2.7.0,
Mencoba:
sumber
Jika Anda menggunakan Windows dan ini tiba-tiba mulai terjadi secara tiba-tiba di GitHub, itu mungkin karena dukungan penonaktifan GitHub baru-baru ini untuk algoritma kriptografi yang tidak digunakan pada 2018-02-22, dalam hal ini solusinya hanya dengan mengunduh dan menginstal versi terbaru dari Git lengkap untuk Windows atau hanya Manajer Kredensial Git untuk Windows .
sumber
Solusi Microsoft Stack (Windows dan Azure DevOps)
Pertama buka
.git/config
file untuk memastikan alamatnya terlihat seperti:Misalnya .git / config untuk Azure DevOps:
Jika masalah masih berlanjut, buka Windows Credential Manager , klik pada kotak penyimpanan bernama Windows Credentials dan hapus semua kredensial terkait git.
Sekarang saat berikutnya Anda masuk ke git, itu tidak akan hilang lagi.
sumber
Jika Anda memiliki pengaturan agen SSH, Anda juga dapat menambahkan ini ke Anda
~/.gitconfig
untuk memaksa git menggunakan SSH untuk semua repositori GitHub daripada HTTPS:(Jika Anda sebagian besar bekerja dengan repo publik, Anda juga dapat menggunakan
pushInsteadOf
daripadainsteadOf
, karena membaca dari repo publik dapat dilakukan tanpa otentikasi).sumber