Anda dapat menghindari kebutuhan untuk mengetikkan kata sandi jika Anda menjalankan ssh agent. Pertama kali Anda melakukan git pull, Anda melakukannya secara interaktif, dan agen ssh akan mengingat kunci pribadi Anda dan Anda dapat menjalankan git pull tanpa diminta.
Tim Finer
Jawaban:
168
Ini tidak persis seperti yang Anda minta, tetapi untuk http (s):
Anda dapat memasukkan kata sandi dalam file .netrc (_netrc di windows). Dari sana, itu akan diambil secara otomatis. Ini akan masuk ke folder rumah Anda dengan 600 izin.
Anda juga bisa mengkloning repo dengan https://user:pass@domain/repotetapi itu tidak benar-benar disarankan karena akan menunjukkan pengguna / pass Anda di banyak tempat ...
opsi baru adalah menggunakan pembantu kredensial . Perhatikan bahwa kredensial akan disimpan dalam teks biasa di konfigurasi lokal Anda menggunakan pembantu kredensial standar. credential-helper with wincred juga dapat digunakan di windows.
Contoh penggunaan pembantu kredensial
git config credential.helper store - menyimpan kredensial tanpa batas waktu.
git config credential.helper 'cache --timeout=3600'- simpan selama 60 menit
Untuk akses berbasis ssh, Anda akan menggunakan agen ssh yang akan menyediakan kunci ssh bila diperlukan. Ini akan membutuhkan pembuatan kunci di komputer Anda, menyimpan kunci publik di server jarak jauh dan menambahkan kunci pribadi ke keystore yang relevan.
Bisakah Anda menguraikan bagian SSH? Saya mengonfigurasi instans EC2, dan saya ingin instans tersebut ditarik tanpa meminta kata sandi dan skala otomatis AWS. Skema publik / swasta ini sepertinya solusi yang bagus.
Pedro Dusso
1
@PedroDusso sepertinya utas ini adalah apa yang Anda cari
eis
2
saya akhirnya menggunakan mekanisme kunci penyebaran, yang tampaknya menjadi solusi yang baik. Terima kasih!
Pedro Dusso
138
Saya menemukan satu cara untuk memberikan kredensial untuk koneksi https pada baris perintah. Anda hanya perlu menentukan URL lengkap untuk git pull dan memasukkan kredensial di sana:
Anda tidak perlu memiliki repositori yang digandakan dengan kredensial sebelumnya, ini berarti kredensial Anda tidak akan masuk .git/config. (Tapi pastikan shell Anda tidak mengkhianati Anda dan menyimpan baris perintah dalam file sejarah.)
kata sandi tidak diperlukan, dan ini tidak aman untuk menulis kata sandi dengan cara ini
meteor
Bukankah ini salah satu hal yang saya cantumkan dalam jawaban yang diterima, sudah di tahun 2012?
eis
8
@eis: Tidak juga. Intinya adalah Anda tidak perlu menggandakan repositori dengan URL yang menyertakan kredensial, tetapi tetap dapat menarik dari URL dengan kredensial. Efeknya adalah kredensial tidak berakhir di file .git / config.
holgero
6
Jika Anda menghilangkan :passwordbagian tersebut, Anda akan diminta memasukkan kata sandi setelah menekan enter. Dengan begitu, kata sandi Anda tidak akan disimpan di riwayat bash.
Tidak menjawab pertanyaan secara langsung, tetapi saya menemukan pertanyaan ini ketika mencari cara untuk, pada dasarnya, tidak memasukkan kembali kata sandi setiap kali saya menarik server jarak jauh .
Nah, gitmemungkinkan Anda untuk menyimpan kredensial Anda untuk waktu yang terbatas. Ini dapat disesuaikan git configdan halaman ini menjelaskannya dengan sangat baik:
Di bawah cmd akan berfungsi jika kita tidak memiliki @ di kata sandi:
git pull https://username:pass@[email protected]/my/repository
Jika Anda memiliki @ di kata sandi, gantilah dengan% 40 seperti yang ditunjukkan di bawah ini:
git pull https://username:pass%[email protected]/my/repository
Jawaban:
Ini tidak persis seperti yang Anda minta, tetapi untuk http (s):
https://user:pass@domain/repo
tetapi itu tidak benar-benar disarankan karena akan menunjukkan pengguna / pass Anda di banyak tempat ...Contoh penggunaan pembantu kredensial
git config credential.helper store
- menyimpan kredensial tanpa batas waktu.git config credential.helper 'cache --timeout=3600'
- simpan selama 60 menitUntuk akses berbasis ssh, Anda akan menggunakan agen ssh yang akan menyediakan kunci ssh bila diperlukan. Ini akan membutuhkan pembuatan kunci di komputer Anda, menyimpan kunci publik di server jarak jauh dan menambahkan kunci pribadi ke keystore yang relevan.
sumber
Saya menemukan satu cara untuk memberikan kredensial untuk koneksi https pada baris perintah. Anda hanya perlu menentukan URL lengkap untuk git pull dan memasukkan kredensial di sana:
Anda tidak perlu memiliki repositori yang digandakan dengan kredensial sebelumnya, ini berarti kredensial Anda tidak akan masuk
.git/config
. (Tapi pastikan shell Anda tidak mengkhianati Anda dan menyimpan baris perintah dalam file sejarah.)sumber
:password
bagian tersebut, Anda akan diminta memasukkan kata sandi setelah menekan enter. Dengan begitu, kata sandi Anda tidak akan disimpan di riwayat bash.Tidak menjawab pertanyaan secara langsung, tetapi saya menemukan pertanyaan ini ketika mencari cara untuk, pada dasarnya, tidak memasukkan kembali kata sandi setiap kali saya menarik server jarak jauh .
Nah,
git
memungkinkan Anda untuk menyimpan kredensial Anda untuk waktu yang terbatas. Ini dapat disesuaikangit config
dan halaman ini menjelaskannya dengan sangat baik:https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
Di terminal, jalankan:
$ git config --global credential.helper cache # Set git to use the credential memory cache
Untuk menyesuaikan waktu tunggu cache, Anda dapat melakukan:
$ git config --global credential.helper 'cache --timeout=3600' # Set the cache to timeout after 1 hour (setting is in seconds)
Kredensial Anda kemudian akan disimpan dalam memori selama waktu yang diminta.
sumber
Perhatikan bahwa cara "menyimpan" git credential helper menyimpan perubahan sandi yang tidak terenkripsi dengan Git 2.5+ (Q2 2014).
Lihat commit 17c7f4d oleh Junio C Hamano (
gitster
)Dokter sekarang berkata:
sumber
Di bawah cmd akan berfungsi jika kita tidak memiliki @ di kata sandi:
git pull https://username:pass@[email protected]/my/repository
Jika Anda memiliki @ di kata sandi, gantilah dengan% 40 seperti yang ditunjukkan di bawah ini:git pull https://username:pass%[email protected]/my/repository
sumber
Jika Anda ingin melakukan ini dalam skrip CI / CD di Gitlab (
gitlab-ci.yml
). Anda bisa menggunakangit pull $CI_REPOSITORY_URL
yang akan diterjemahkan menjadi sesuatu seperti:
Dan saya cukup yakin token yang digunakannya adalah token sementara / per pekerjaan - jadi celah keamanan dengan metode ini sangat berkurang.
sumber
Anda cukup menggunakan nama pengguna tidak perlu menggunakan kata sandi karena kata sandi akan diminta di git bash.
sumber