Git push membutuhkan nama pengguna dan kata sandi


1437

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?


1
Ya tapi apa yang harus saya lakukan? Saya menghasilkan keygen apa lagi?
TooCooL

1
Anda perlu mendaftarkan pubkey dengan akun Github Anda ( github.com/account/ssh ) dan mengonfigurasi klien SSH Anda untuk menggunakan nama pengguna yang tepat.
jwodder

1
Saya telah melakukan semua itu tetapi masih membutuhkan nama pengguna dan kata sandi! apakah mungkin menggunakan satu akun dengan dua PC?
TooCooL

1
Pertanyaan ini mencakup semua opsi Anda dengan cukup baik: stackoverflow.com/questions/5343068/…
ford

2
Tidak perlu beralih ke ssh lagi. Itu mungkin dengan HTTPS juga. Periksa jawabanku.
Varun Achar

Jawaban:


1961

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:

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

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


61
Dan untuk mencari cara untuk mengubah URL, pergi di sini: stackoverflow.com/a/2432799/60488 (spoiler: git remote set-url origin git://new.url.here)
Johan Kool

136
Jika Anda tidak dapat menggunakan ssh untuk pembatasan keamanan (seperti saya), Anda dapat melakukan: git remote set-url origin https://name:password@github.com/repo.git (diekstrak dari komentar di sini)
Bruno Berisso

134
Mengapa kloning dengan HTTPS merupakan kesalahan umum? GitHub sekarang merekomendasikan menggunakan HTTPS.
Dennis

8
@smftre secara default itulah masalahnya, tetapi Anda dapat menggunakan pembantu untuk men- cache kredensial Anda .
Dennis

28
Memperbaiki saya Permission denied (publickey)menggunakan panduan ini: help.github.com/articles/generating-ssh-keys .
voltrevo

386

Mengotentikasi secara permanen dengan repositori Git

Jalankan perintah berikut untuk mengaktifkan caching kredensial :

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

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

Anda juga harus menentukan caching kedaluwarsa ,

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

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


Anda mungkin juga harus mengubah url jarak jauh dengan git remote set-url origin https://git@github.com/<owner>/<repo>.git Ini juga berfungsi dengan 2FA
Bron Davies

14
Ini harus menjadi jawaban yang diterima. Itu menjawab pertanyaan persis.
Abraham TS

apakah itu akan dihapus secara otomatis dari file ubuntu ke setelah 7200 untuk tujuan keamanan?
usama

atau 43.200 selama 12 jam. Anda masuk sekali sehari. Itu mungkin lebih masuk akal bagi sebagian orang.
Urasquirrel

Baru saja mencoba ini - dapatkan:fatal: protocol 'https' is not supported
Joel

134

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

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

Dan bukan ini:

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

Anda sekarang dapat memvalidasi hanya dengan kunci SSH alih-alih usernamedan password.


1
Cara paling mudah untuk memperbaiki masalah, cukup edit URL asal jarak jauh. Itu saja. Selesai Terima kasih!
JOM

1
Ini berhasil bagi saya, tetapi pertama-tama saya perlu mengatasinya: stackoverflow.com/questions/2643502/…
Sridhar Sarnobat

untuk mengatur kunci SSH Anda dapat merujuk ke help.github.com/articles/connecting-to-github-with-ssh
ksridhar

120

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 ~/.netrcdan tidak akan menanyakan nama pengguna / kata sandi Anda (setidaknya di Linux dan Mac):

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

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 :

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

Ini juga berfungsi di Linux, Mac, dan Windows.


3
Ya, itu bekerja di Linux, tetapi tidak bekerja untuk gitbash di Windows.
Penjualan Dielson

3
@dolman Saya mengerti maksud Anda, tetapi jika Anda keberatan memasukkan kata sandi dalam teks yang jelas, Anda dapat ... mengenkripsinya;) Lihat stackoverflow.com/a/18362082/6309 . dan itu bahkan kompatibel dengan otentikasi 2-faktor (2FA) dari Github: stackoverflow.com/a/18607931/6309
VonC

3
@Penjualan ini berfungsi dengan baik dari sesi DOS atau git bash di Windows, asalkan Anda memanggil file Anda %HOME%\_netrc(bukan ~/.netrc). Lihat juga stackoverflow.com/a/18362082/6309 untuk mengenkripsi file itu.
VonC

1
Ini bekerja sangat baik di Linux, terutama menggunakan git over VPN.
Evan Hu

3
Anda tidak perlu memasukkannya ke dalam teks yang jelas atau mengenkripsi itu. utilitas helper akan menyimpannya untuk Anda dan membutuhkan waktu 30 detik untuk mengatur. help.github.com/articles/caching-your-github-password-in-git/…
user137717

86

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

git remote -v

Yang akan merespons dengan sesuatu seperti

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

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.gitdari atas ke:

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

1
Saya mencoba ini. Ia meminta saya untuk paraphrasesetiap kali. Saya tidak membuat satu
samayo

Apa yang terjadi yourrepo?
Raphi

2
@Raphi lari git remote -vdan lihat apa yang keluar
Davide

1
Jawaban lain harus ditambahkan saran ini.
Bennett Brown

57

Jika 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, dan fetch.

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-agentuntuk 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 :

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

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-addmencari kunci pribadi di .sshfolder rumah Anda yang disebut id_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-agentdengan bendera kill -k:

$ ssh-agent -k

Seperti yang dijelaskan dalam ssh-agentmanual :

-k

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

Batas waktu opsional

Selain itu, dapat mengambil parameter batas waktu opsional seperti:

$ ssh-add -t <timeout>

di mana <timeout>adalah format <n>huntuk <n>jam, <n>muntuk <n>menit, dan seterusnya.

Menurut ssh-agentmanual :

-t life

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

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 :

orang harus menyadari potensi bahaya ssh-agent di bawah Cygwin 1 , meskipun di bawah netstat lokal dan porta jarak jauh tidak terlihat 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, catatan bahwa Cygwin Unix soket domain yang MENDASAR INSECURE dan jadi saya sangat mencegah penggunaan ssh-agent di bawah Cygwin.

ketika Anda menjalankan ssh-agent di bawah Cygwin itu menciptakan soket AF_UNIX di /tmp/ssh-$USERNAME/direktori. Di bawah Cygwin AF_UNIX soket ditiru melalui soket AF_INET. Anda dapat dengan mudah melihatnya jika Anda akan melihat /tmp/ssh-$USERNAME/agent-socket-*file melalui Notepad. Anda akan melihat sesuatu seperti

!<socket >2080

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

Di bawah Unix, skenario seperti itu berfungsi tanpa masalah, karena kernel Unix memeriksa izin ketika program mencoba mengakses soket AF_UNIX. Namun, untuk soket AF_INET, koneksi bersifat anonim (baca "tidak aman"). Bayangkan, Anda menjalankan ssh-agent Cygwin. Seorang hacker jahat dapat portcan kotak Anda, cari port terbuka yang digunakan oleh ssh-agent, buka koneksi ke server SSH Anda, terima tantangan RSA darinya, kirim ke ssh-agent Anda melalui port terbuka yang ia temukan, terima Respons RSA, kirimkan ke server SSH dan voila, ia berhasil masuk ke server Anda saat Anda.


Kedengarannya bagus dan terperinci. Saya merawat https helper kredensial , dan Anda merawat koneksi ssh! +1
VonC

49

Sumber: Mengatur Git

Perintah berikut akan menyimpan kata sandi Anda di 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 one hour (setting is in seconds)

2
Saya lebih suka bantuan kredensial 'netrc' ( stackoverflow.com/a/18362082/6309 ) untuk caching banyak kredensial (tanpa harus mengingat setiap kata sandi). Tetapi jika Anda menggunakan Windows dan ingin menggunakan cache memori, Anda perlu winstore ( stackoverflow.com/a/15310274/6309 )
VonC

9
Ini adalah jawaban terbaik IMHO sejauh ini.
Chiel ten Brinke

35

Saat Anda menggunakan https untuk Git pull & push, cukup konfigurasikan remote.origin.urluntuk proyek Anda, untuk menghindari input nama pengguna (atau / dan kata sandi) setiap kali Anda mendorong.

Cara mengkonfigurasi remote.origin.url:

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

Parameter dalam URL:

* username 
Opsional, nama pengguna untuk digunakan saat dibutuhkan.
autentikasi, jika ditentukan, tidak perlu memasukkan nama pengguna lagi saat perlu otentikasi. Jangan gunakan email; gunakan nama pengguna Anda yang tidak memiliki "@", jika tidak URL tidak dapat diuraikan dengan benar, * kata sandi opsional, kata sandi untuk digunakan ketika perlu otentikasi. Jika ditentukan, tidak perlu memasukkan kata sandi lagi saat membutuhkan otentikasi. Tip: nilai ini disimpan sebagai teks biasa, jadi untuk masalah keamanan, jangan tentukan parameter ini, * misalnya git config remote.origin.url https: //eric@github.com/eric/myproject

@ Perbarui - gunakan ssh

Saya pikir menggunakan sshprotokol adalah solusi yang lebih baik daripada https, meskipun langkah pengaturannya sedikit lebih kompleks.

Langkah kasar:

  • Buat kunci ssh menggunakan perintah, misalnya ssh-keygendi Linux, di windows msysgitmenyediakan perintah serupa.
  • Simpan kunci pribadi di mesin lokal di lokasi yang tepat, misalnya ~/.ssh,. Dan menambahkannya ke agen ssh via ssh-addperintah.
  • Unggah kunci publik ke server Git.
  • Ubah remote.origin.urlrepositori Git ke sshgaya, misalnya,git@gitlab.com:myaccount/myrepo.git
  • Kemudian ketika menarik atau menekan, tidak perlu memasukkan nama pengguna atau kata sandi sebelumnya.

Kiat:

  • Jika kunci ssh Anda memiliki kata sandi, maka Anda harus memasukkannya saat pertama kali menggunakan kunci setelah setiap restart mesin Anda, secara default.

@ Perbarui - Beralih antara httpsdan sshprotokol.

Cukup mengubah remote.origin.urlakan cukup, atau Anda dapat mengedit repo_home/.git/configlangsung untuk mengubah nilai (misalnya menggunakan vidi Linux).

Biasanya saya menambahkan baris untuk setiap protokol, dan berkomentar salah satunya menggunakan #.

Misalnya

[asal "jarak jauh"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + ref / head / *: ref / remote / origin / *

Apakah Anda yakin URL berbasis http mendukung ekspansi nama pengguna? Manual git-fetch(1)menyebutkan bahwa hanya untuk git/ ssh-berbasis URL.
hari

@plmday ya, saya menggunakannya, versi git saya adalah 1.8.2.3 dan 1.8.4, saya tidak yakin apakah verion yang lebih tinggi melakukan perubahan tentang ini.
Eric Wang

1
NB yang memberikan kata sandi Anda di URL (bahkan ketika menggunakan HTTPS) berarti bahwa itu dapat dilihat oleh semua orang di antara Anda dan repositori Anda.
William

3
Tidak, memberikan kata sandi https://username:password@github.com/aman. Lihat stackoverflow.com/questions/4980912/…
lambat

1
Dan inilah yang saya cari (untuk otomatisasi penuh)
Joshua

16

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.


5
ini adalah jawaban terbaik di sini dan harus menjadi yang diterima IMO
TheZuck

1
Setuju, jawaban yang mengutip dokumentasi resmi harus didahulukan. Saya dengan senang hati mengikuti instruksi mereka dan lebih suka menggunakan konvensi standar.
johnnieb

10

Ini pilihan lain:

Alih-alih menulis

git push origin HEAD

Anda bisa menulis:

git push https://user:pass@yourrepo.com/path HEAD

Jelas, dengan sebagian besar shell ini akan mengakibatkan kata sandi di-cache dalam sejarah, jadi ingatlah itu.


1
Di Bash, menambahkan satu atau beberapa ruang utama biasanya tidak menyimpannya dalam sejarah. Tapi tidak di Git Bash .
Peter Mortensen

Ini hanya bekerja untuk saya :)
Naveen Kumar V

9

Apa yang berhasil bagi saya adalah mengedit .git/configdan menggunakan

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

Tak 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.


6

Jika kunci atau .netrcfile 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:

git config --global credential.helper store

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.


5

Saya memiliki masalah yang sama.

Jadi saya mengubah .git/configfile dari proyek saya,

url = https://github.com/<your-user-here>/<your-repo-here>

untuk

url = git@github.com:<your-user-here>/<your-repo-here>

dan menambahkan kunci publik SSH ke profil Git yang ada di pengaturan.

Untuk kunci publik SSH:

cat ~/.ssh/id_rsa.pub

1
dengan cat ~/.ssh/id_rsa.pubmendapatkan kunci rsa dan rekatkan di pengaturan portal web git.
Anupam Maurya

4

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 .gitconfigfile Anda . Periksa kembali apakah sudah diedit dengan benar .gitconfigjika Anda memiliki beberapa di antaranya. Jika tidak mengedit yang benar, tambahkan berikut ini ke.gitconfig

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

    Perhatikan garis putus setelah [credential]. Itu wajib.

  • Buka klien baris perintah Anda dan coba git push origin mastersekali. Jika Anda meminta kata sandi, masukkan dan Anda selesai. Kata sandi disimpan!


Terima kasih Varun, pesona yang berhasil!
Joyy

4

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 ini

git config --list --show-origin

Dalam kasus saya, setelah mengedit secara manual file konfigurasi 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig', dan menambahkan teks berikut, itu berhasil.

[credential]
    helper = store

3

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

ssh -vv username@github.com

Untuk mendapatkan informasi lebih lanjut mengapa SSH gagal.


3

Memperbarui file konfigurasi Git Anda secara langsung ( jika Anda tidak ingin mengingat perintah mewah ):

Buka .git/configfile Anda di editor teks favorit Anda. Itu akan berada di folder yang Anda kloning atau di repositori yang Anda lakukan git initmasuk ke repositori itu. .gitadalah folder tersembunyi, dan menekan Ctrl+ Hakan menampilkan folder tersembunyi, ( ls -adalam terminal).

Di bawah ini adalah contoh .git/configfile. Salin dan tempel baris ini dan pastikan untuk memperbarui baris tersebut dengan informasi Git Anda.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Ubah bagian URL dengan format berikut untuk SSH:

url = git@github.com:happy_feet/my_code.git

( 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


2

Inilah yang bekerja untuk saya:

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

Contoh:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

Terima kasih, saya mengubah jawaban Anda
Mandeep Singh

2

Anda perlu melakukan dua langkah -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

Perhatikan bahwa URL Git adalah URL SSH dan bukan URL HTTPS ... Yang dapat Anda pilih dari sini:

Masukkan deskripsi gambar di sini


2

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

cd ~/

buat file .git-kredensial

Tambahkan konten ini ke file itu dengan Anda usename passworddangithosting URL

https://user:pass@example.com

Kemudian jalankan perintah

git config --global credential.helper store

Sekarang Anda akan dapat menarik push dan mengambil semua detail dari repo Anda tanpa kerumitan.


0

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 ...


0

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:

Izin ditolak.

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!


0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files

0

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 Tokensdi GitHub ( https://github.com/settings/tokens/new ), dan hasilkan Token baru dengan semua izin Repo :

menghasilkan token akses pribadi GitHub

Halaman kemudian akan menampilkan nilai token baru. Simpan nilai ini dan gunakan sebagai ganti kata sandi Anda saat mendorong ke repositori Anda di GitHub:

> git push origin develop
Username for 'https://github.com': <your username>
Password for 'https://<your username>@github.com': <your personal access token>
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.