Pertanyaan Git push membutuhkan nama pengguna dan kata sandi


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 menggunakan laptop!

Saya tidak ingin mengetikkan nama pengguna dan kata sandi saya setiap kali saya berinteraksi dengan asalnya. Apa yang saya rindukan di sini?


1069
2017-07-03 20:25


asal


Jawaban:


Kesalahan umum adalah kloning menggunakan default (HTTPS) bukan SSH. Anda dapat memperbaikinya dengan pergi ke repositori Anda, klik "Klon atau unduh", lalu klik tombol "Gunakan SSH" di atas bidang URL dan perbarui URL dari remote asal Anda seperti ini:

git remote set-url origin git@github.com:username/repo.git

Ini didokumentasikan di GitHub: Mengalihkan URL jarak jauh dari HTTPS ke SSH.


1579
2017-07-03 21:25



Diautentikasi secara permanen dengan repositori Git,

Jalankan perintah berikut untuk mengaktifkan cache kredensial:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Gunakan juga harus menentukan caching kedaluwarsa,

git config --global credential.helper 'cache --timeout 7200'

Setelah mengaktifkan cache kredensial, cache akan di-cache 7200 detik (2 jam).


172
2018-02-17 13:30



Saya baru saja menemukan masalah yang sama, dan solusi paling sederhana yang saya temukan adalah menggunakan URL SSH daripada HTTPS:

ssh://git@github.com/username/repo.git

Dan bukan ini:

https://github.com/username/repo.git

Anda sekarang dapat memvalidasi dengan hanya itu SSH Key bukannya username dan password.


109
2018-06-14 07:19



Selain mengubah ke SSH Anda juga dapat tetap menggunakan HTTPS, jika Anda tidak keberatan untuk memasukkan kata sandi Anda dalam teks yang jelas. Masukkan ini ke dalam Anda ~/.netrc dan tidak akan meminta nama pengguna / kata sandi Anda (setidaknya di Linux dan Mac):

machine github.com
       login <user>
       password <password>

Tambahan (lihat komentar 2 VonC): pada Windows nama file adalah %HOME%\_netrc.

Baca juga komentar pertama VonC jika Anda ingin mengenkripsi.

Tambahan lainnya (lihat komentar user137717) yang dapat Anda gunakan jika Anda memilikinya git 1.7.10 atau yang lebih baru.

Cache kata sandi github Anda di git menggunakan helper kredensial :

Jika Anda mengkloning repositori GitHub menggunakan HTTPS, Anda dapat menggunakan   Pembantu kredensial untuk memberitahu Git untuk mengingat nama pengguna GitHub Anda dan   kata sandi setiap kali berbicara dengan GitHub.

Ini juga berfungsi di Linux, Mac, dan Windows.


105
2018-01-19 19:08



Untuk yang tidak tahu diri yang bingung dengan jawaban sebelumnya, Anda dapat melakukan:

git remote -v

yang akan merespon sesuatu seperti

origin  https://yourname@github.com/yourname/yourrepo.git (fetch)
origin  https://yourname@github.com/yourname/yourrepo.git (push)

maka Anda dapat menjalankan perintah yang disarankan banyak orang lain, tetapi sekarang Anda tahu namaAnda dan yourrepo dari atas, sehingga Anda dapat memotong dan menempel yourname/yourrepo.git dari atas ke dalam

git remote set-url origin git@github.com:yourname/yourrepo.git

69
2018-02-13 17:22



Jika Anda menggunakan ssh dan kunci pribadi Anda dienkripsi dengan frasa sandi, maka Anda akan tetap diminta memasukkan passphrase / kata sandi untuk kunci privat ketika Anda melakukan operasi jaringan dengan Git seperti push, pull, dan fetch.

Gunakan ssh-agent untuk menyimpan kredensial kata sandi kunci / kata sandi pribadi

Jika Anda ingin menghindari memasukkan kata sandi setiap kali, Anda dapat menggunakannya ssh-agent untuk menyimpan kredensial passphrase kunci pribadi Anda sekali per sesi terminal, seperti yang saya jelaskan jawaban saya untuk Tidak bisa membuka koneksi ke agen otentikasi Anda:

$ eval `ssh-agent -s`
$ ssh-add

Dalam Bash Windows msysgit, Anda perlu mengevaluasi output dari ssh-agent, tapi saya tidak yakin apakah Anda perlu melakukan hal yang sama di lingkungan pengembangan dan sistem operasi lainnya.

ssh-add mencari kunci pribadi di rumah Anda .ssh folder bernama id_rsa, yang merupakan nama default, tetapi Anda dapat meneruskan filepath ke kunci dengan nama yang berbeda.

Membunuh agen

Setelah selesai dengan sesi terminal Anda, Anda dapat mematikan ssh-agent dengan bendera membunuh -k:

$ ssh-agent -k

Sebagaimana dijelaskan dalam ssh-agent manual:

-k

Bunuh agen saat ini (diberikan oleh variabel lingkungan SSH_AGENT_PID).

Waktu tunggu opsional

Juga, dapat mengambil parameter timeout opsional seperti:

$ ssh-add -t <timeout>

dimana <timeout> adalah formatnya <n>h untuk <n> jam, <n>m untuk <n> menit, dan seterusnya.

Menurut ssh-agent manual:

-t life

Tetapkan nilai default untuk usia maksimum identitas yang ditambahkan   kepada agen. Masa pakai dapat ditentukan dalam detik atau dalam   format waktu yang ditentukan dalam sshd_config (5). Seumur hidup ditentukan   untuk identitas dengan ssh-add (1) menimpa nilai ini. Tanpa   opsi ini, masa hidup maksimum default adalah selamanya.

Lihat halaman ini untuk lebih banyak format waktu.

Peringatan keamanan untuk pengguna Cygwin

Pengguna Cygwin harus menyadari a potensi risiko keamanan dengan menggunakan ssh-agent di Cygwin:

orang harus sadar akan   potensi bahaya ssh-agent di bawah cygwin [1], meskipun di bawah lokal   netstat dan remote portscan tidak tampak bahwa port yang ditentukan dalam   / tmp / ssh-foo dapat diakses oleh siapa saja ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Dan di tautan yang dikutip:

Namun, perhatikan bahwa soket domain unix cygwin adalah FUNDAMENTAL   INSECURE  dan saya sangat MENGECILKAN HATI penggunaan ssh-agent di bawah   cygwin.

ketika Anda menjalankan ssh-agent di bawah cygwin, itu akan membuat soket AF_UNIX masuk    /tmp/ssh-$USERNAME/  direktori. di bawah soket cygwin AF_UNIX   ditiru melalui soket AF_INET. Anda dapat dengan mudah melihat bahwa jika Anda melihat   ke /tmp/ssh-$USERNAME/agent-socket-*  file melalui notepad. Anda akan melihat   sesuatu seperti itu

!<socket >2080

lalu lari netstat -a dan kejutan! Anda memiliki beberapa program yang mendengarkan   port 2080. itu ssh-agent. ketika ssh menerima tantangan RSA dari   server, mengacu pada yang sesuai /tmp/ssh-$USERNAME/agent-socket-*   (di bawah cygwin, dalam kasus kami, itu berarti itu akan membuka koneksi ke    localhost:2080) dan meminta ssh-agent untuk memproses tantangan RSA dengan   kunci privat yang dimilikinya, dan kemudian hanya melewati respons yang diterima dari   ssh-agent ke server.

di bawah unix, skenario seperti itu bekerja tanpa masalah, karena kernel unix   memeriksa perizinan ketika program mencoba mengakses soket AF_UNIX. Untuk   Tetapi, soket AF_INET, koneksi bersifat anonim (baca   "tidak aman"). Bayangkan, Anda memiliki cygwin ssh-agent yang sedang berjalan.   hacker jahat dapat mem-portscan kotak Anda, cari port terbuka yang digunakan oleh   ssh-agent, koneksi terbuka ke server ssh Anda, menerima tantangan RSA   dari itu, kirimkan ke ssh-agent Anda melalui port terbuka yang ia temukan, terima RSA   respons, kirim ke server ssh dan voila, ia berhasil masuk   ke server Anda seperti Anda.


48
2017-08-21 02:54



Sumber: Atur Git

Perintah berikut ini akan menyimpan kata sandi Anda dalam memori untuk beberapa waktu.
  (Untuk git 1.7.10 atau yang lebih baru.)

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

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

41
2017-09-01 02:55



Ketika Anda menggunakan https untuk git pull & push, cukup konfig remote.origin.url untuk proyek Anda, untuk menghindari memasukkan nama pengguna (atau / dan kata sandi) setiap kali Anda menekan.

Bagaimana cara mengkonfigurasi remote.origin.url:

Format Url:
    https: // {username: password @} github.com/ {owner} / {repo}

Parameter dalam url:
* nama pengguna
    opsional, nama pengguna yang digunakan saat memerlukan autentikasi,
    jika ditentukan, tidak perlu memasukkan nama pengguna lagi ketika membutuhkan otentikasi,
    jangan gunakan email, gunakan nama pengguna Anda yang tidak memiliki "@", jika tidak url tidak dapat diuraikan dengan benar,
* kata sandi
    opsional, kata sandi yang digunakan saat membutuhkan otentikasi,
    jika ditentukan, tidak perlu memasukkan kata sandi lagi saat memerlukan otentikasi,
    tip:
        nilai ini disimpan sebagai teks biasa, jadi untuk masalah keamanan, jangan tentukan param ini,
*

misalnya
    git config remote.origin.url https: //eric@github.com/eric/myproject


@Pembaruan - menggunakan ssh

Saya pikir menggunakan ssh protokol adalah solusi yang lebih baik daripada https, meskipun langkah pengaturan sedikit lebih rumit.

Langkah-langkah kasar:

  • Buat kunci ssh menggunakan perintah, mis ssh-keygen di linux, di windows msysgit memberikan perintah yang serupa.
  • Simpan kunci pribadi di komputer lokal di lokasi yang tepat, misalnya ~/.ssh. Dan tambahkan ke agen ssh via ssh-add perintah.
  • Unggah kunci publik ke server git.
  • Perubahan remote.origin.url dari git repositori ssh gaya, misalnya git@gitlab.com:myaccount/myrepo.git
  • Lalu ketika menarik atau mendorong, tidak perlu memasukkan nama pengguna atau kata sandi sebelumnya.

Kiat:

  • Jika kunci ssh Anda memiliki kata sandi, maka Anda perlu memasukkannya pada penggunaan pertama kunci setelah setiap restart mesin Anda, secara default.

@Pembaruan - Beralih di antara https dan ssh protokol.

Cukup berubah remote.origin.url akan cukup, atau Anda dapat mengedit repo_home/.git/config langsung untuk mengubah nilai (misalnya menggunakan vi di linux).

Biasanya saya menambahkan baris untuk setiap protokol, dan komentar salah satu dari mereka menggunakan #.

misalnya

[remote "asal"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / remote / origin / *

28
2017-12-25 15:42



Anda dapat menyimpan sandi GitHub Anda di Git:

Ikuti saja petunjuk dari github dokumentasi resmi.

Setelah mengikuti instruksi dari tautan di atas, Anda harus dapat mendorong / menarik ke / dari repo Anda tanpa mengetik nama pengguna / kata sandi Anda setiap saat.


15
2017-12-19 05:29



Apa yang berhasil bagi saya adalah mengedit .git/config dan digunakan

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Tak usah dikatakan bahwa ini adalah cara yang tidak aman untuk menyimpan kata sandi Anda tetapi ada lingkungan / kasus di mana ini mungkin tidak menjadi masalah.


5
2017-07-31 18:25



Pembaruan untuk HTTPS:

Github telah meluncurkan program baru untuk Windows yang menyimpan kredensial Anda saat Anda menggunakan HTTPS:

Menggunakan:

Unduh program dari sini

Setelah Anda menjalankan program itu akan mengedit Anda .gitconfigmengajukan. Periksa kembali apakah sudah diedit dengan benar .gitconfig jika Anda memiliki beberapa dari mereka. Jika tidak mengedit yang benar, tambahkan yang berikut ini ke Anda .gitconfig

[credential]
    helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'

Perhatikan jeda baris sesudahnya [credential]. Itu diperlukan.

Buka klien baris perintah Anda dan coba git push origin master sekali. Jika itu meminta Anda untuk memasukkan kata sandi, masukkan dan Anda selesai. Kata sandi disimpan!


4
2018-04-05 06:02