Bagaimana saya bisa melakukan `git pull` tanpa memasukkan kembali kata sandi SSH saya?

97

Apakah mungkin untuk dikonfigurasi git/sshsehingga saya tidak perlu memasukkan frasa sandi saya setiap kali saya ingin melakukan git pull? Perhatikan bahwa repo adalah repo pribadi di github.

Atau, sebagai alternatif, apa praktik terbaik untuk mengotomatiskan penerapan kode dari repo Github pribadi?

Detail tambahan: Instans EC2 menjalankan AMI publik berdasarkan Fedora.

jldupont.dll
sumber
2
kemungkinan duplikat dari Configuring Git over SSH
meagar
Anda punya solusi untuk masalah ini?
nim
Mulai git 2.11+ (Q4 2016) menggunakan libsecret adalah cara lain: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Jawaban:

69

Lihat tautan ini https://help.github.com/articles/working-with-ssh-key-passphrases/

Tetapi saya tidak ingin memasukkan frasa sandi yang panjang setiap kali saya menggunakan kunci!

Saya juga tidak! Untungnya, ada alat kecil yang bagus bernama ssh-agentyang dapat menyimpan kata sandi Anda dengan aman sehingga Anda tidak perlu memasukkannya kembali. Jika Anda menggunakan OSX Leopard atau lebih baru, kunci Anda dapat disimpan di rantai kunci sistem untuk membuat hidup Anda lebih mudah. Kebanyakan instalasi linux akan secara otomatis memulai ssh-agent untuk Anda saat Anda masuk.

Fredrik Pihl
sumber
3
sedikit gugup menjawab seseorang dengan reputasi 17.7k; apakah saya salah menafsirkan pertanyaan ... ;-)
Fredrik Pihl
3
gugup? yakinlah: sebagian besar orang di sini cukup sopan ... dan mereka yang tidak, yah, mereka memiliki masalah yang lebih besar dari saya :)
jldupont
2
Tautan ini berguna dalam menjelaskan perintah apa yang harus dijalankan agar frasa sandi Anda disimpan di ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim
Saya tidak ingin menggunakan kunci. Sederhana saya memiliki pengguna \ pass dan saya ingin menyimpannya di sisi klien git
nim
Mengapa tautan hanya menyediakan opsi Mac / Widows? Saya ingin melakukan git pull di server unix tanpa masuk kembali ke pass. berhasil membuatnya bekerja untuk proyek bersejarah tetapi tidak tahu apa yang saya lakukan di sana. Apakah intinya ketika Anda melakukan ssh ke mesin unix jarak jauh, kunci tersebut diteruskan dan itu digunakan sebagai kunci git pull (atau private composer vcs)? Saya yakin saya salah paham tentang sesuatu di sini. Setiap bantuan dihargai :)
trainoasis
30

Saya mengaktifkan cache sandi seperti yang dijelaskan di sini:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Untuk menyimpan kata sandi selama sebulan:

git config --global credential.helper 'cache --timeout=2628000'
Sileria
sumber
Terima kasih, temuri- Saya sudah mencari ke mana-mana untuk detail persis ini. Itu tidak berfungsi, tetapi dokumentasinya tampaknya tidak menyebutkan itu hanya untuk HTTPS.
Mike Emery
2
Jika Anda menggunakan sandi ( bukan frasa sandi dengan file kunci) untuk URL berbasis SSH dari repo Git jarak jauh, Anda tidak dapat menyimpan sandi sama sekali. Tetapi saya perhatikan bahwa setelah mengeluarkan perintah git apa pun, Anda dapat langsung mengetikkan kata sandi dan menekan Enter . Anda tidak perlu menunggu permintaan kata sandi muncul.
ADTC
1
git masih meminta izin
nim
12

Coba ini:

git config credential.helper store

Anda harus memasukkan kata sandi Anda sekali, setelah itu disimpan di folder di dalam root.

Seperti yang ditunjukkan oleh komentar, Ini TIDAK berfungsi untuk kata sandi SSH, hanya untuk kata sandi HTTPS.

Yankee
sumber
1
@nim Itu tidak berarti Anda harus meremehkan jawabannya, saya telah menyarankan apa yang berhasil untuk saya, dan seseorang mungkin akan merasa terbantu.
Yankee
Ini tidak menyimpan kata sandi. Saya mencobanya dan tidak ada hasil. Jika Anda melakukan remote seperti ini ssh: // name @ ip / path
nim
1
Ini berfungsi jika Anda ingin menyimpan sandi autentikasi dasar HTTP.
Phil
4
Ini TIDAK berfungsi untuk kata sandi SSH, hanya untuk kata sandi HTTPS.
Eliezer Berlin
bekerja dengan baik untuk https. Anda hanya perlu mengetik ini. Lain kali harus menjadi saat terakhir Anda perlu memasukkan parafrase. Lain kali, kata sandi harus diingat oleh git.
Jonathan
7

Situasi Anda sekarang sudah diperbaiki, namun bagi saya itu adalah fakta bahwa saya memiliki lebih dari satu kunci ~/.ssh/

Untuk mengatasi masalah ini saya harus membuat file bernama ~/.ssh/configdan menambahkan baris:

IdentityFile ~/.ssh/my_key2_rsa

dimana ~/.ssh/my_key2_rsakunciku.

Mogsdad
sumber
1
Terima kasih untuk ini, file id_rsa dan saya id_rsa.pubmemiliki nama khusus, itulah sebabnya git tidak akan pernah mengenalinya. ref: linux.die.net/man/5/ssh_config
lasec0203
5

Saya tidak tahu mengapa belum ada yang melaporkan ini. Tetapi pendekatan yang paling sederhana adalah dengan menambahkan satu baris AddKeysToAgent yesdi atas file .ssh / config. Tentu ssh-agentharus dijalankan terlebih dahulu. Jika tidak berjalan (periksa dengan perintah ssh-agentdi terminal), jalankan sajaeval $(ssh-agent)

Saya dapat mengonfirmasi bahwa ini berfungsi, karena dalam proyek saya dengan banyak submodul dan untuk setiap submodul yang dikloning, saya harus mengetikkan kata sandi ssh saya. Setelah trik di atas, saya tidak perlu melakukannya lagi.

Sumber solusinya adalah /ubuntu/362280/enter-ssh-passphrase-once/853578#853578

infoclogged
sumber
Ini benar-benar jawaban yang benar. Lebih lanjut, untuk menjalankan ssh-agent, seseorang dapat menggunakan layanan pengguna systemd
someonewithpc