Bagaimana membuat git tidak meminta frasa sandi untuk kunci ssh di windows?

43

Saya menggunakan git bash dan saya mengatur kunci ssh menggunakan ssh-keygen dan setiap kali saya melakukan sesuatu dengan repo git minta saya untuk frasa sandi /c/Users/jankiewj/.ssh/id_rsa. Apakah ada cara untuk menonaktifkan frasa sandi itu.

jcubic
sumber
Halaman ini pada serverfault dapat membantu serverfault.com/questions/194567/…
@Radoo itu tidak membantu.
jcubic

Jawaban:

56

Anda dapat menjalankan ini di git bash:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

ia akan meminta pass phrase dalam perintah kedua, dan hanya itu. Setiap tindakan tambahan yang perlu Anda lakukan (yang mana diperlukan frase lulus) tidak akan meminta Anda untuk frase lulus (lihat contoh di screenshot di bawah ini):

menambahkan pass phrase di git bash di Windows

jcubic
sumber
7
Saya harus memasukkannya lagi, begitu saya menutup git bash ... apakah ada solusi permanen?
Hitam
@Kurangnya per sesi bash, saya sudah memasukkan ini .bashrcjadi setiap kali saya buka git bash saya mendapatkan prompt dan untuk sesi itu saya siap.
jcubic
Apa tepatnya yang Anda masukkan ke dalam .bashrc? Dan di mana .bashrc?
Hitam
Sunting: nevermind, Anda harus membuat file yourselv di ~/.bashrckemudian masukkan baris dari posting Anda ke dalamnya dan simpan, itu saja :) thx!
Hitam
Alih-alih menggunakan baris di atas, terutama di .bashrc, saya akan menggunakan skrip, dan letakkan di salah satu .bash_profileatau .profile. Ini adalah potongan dari bagian utama saya .bash_profile, itu harus menyelesaikan ini untuk siapa pun yang masih mencari jawaban; ini mirip dengan jawaban di bawah ini. Di bagian atas skrip saya memuat .bashrc, yang jika tidak berlaku tinggalkan saja. Catatan: Anda harus mengubah referensi id_rsake apa pun yang Anda beri nama kunci SSH pribadi Anda, dan mungkin path.
Rockin4Life33
9

Solusi yang sedikit lebih baik dan permanen adalah dengan meluncurkan ssh-agent secara otomatis saat membuka git bash di windows. Anda dapat menyalin / menempelkan di bawah ini di .profile atau .bashrc Anda. Saya lebih suka meletakkannya di profil

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Solusi ini diambil dari artikel bantuan github ini

velval
sumber
Saya sudah memasukkan kode sederhana saya .bashrc, bagaimana solusi Anda berbeda? Pada Windows, bash setiap shell bersifat independen sehingga agen tidak pernah berjalan saat Anda menjalankan shell.
jcubic
Solusi berfungsi dengan baik dengan memasukkan kode ke dalam .bashrc. Meminta frasa sandi ssh hanya pada saat pertama. Amankan hidupku. Terima kasih.
Ben Asmussen
terima kasih itu sangat menyelamatkan hidupku.
gumuruh
Ini harus benar-benar jawaban yang diterima karena menyajikan solusi yang gigih dan lebih memenuhi apa yang saya pikir OP tanyakan.
Richard D
Apa yang harus saya lakukan jika saya mengetik kata sandi yang salah secara tidak sengaja pada saat startup? Sunting: Berdasarkan superuser.com/a/271673/647110 , Anda dapat ssh-add -Dmenghapus semua kunci.
Nils Guillermin
1

Saya tidak yakin apakah saya ingin merekomendasikannya, tetapi ketika Anda membuat Kunci dan diminta untuk mengatur kata sandi, cukup tekan enter dan lewati kata sandi.

Lihatlah tautan ini untuk cara menggunakan ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Mungkin ssh-agentbisa membantu Anda. Tetapi tidak yakin tanpa mengetahui sistem Anda saat ini.

David Bern
sumber
4
jelas bukan jawaban yang bagus
Kennet Celeste
Itu adalah satu-satunya cara untuk menyelesaikannya di windows 10. Setelah mengikuti semua langkah "Menghasilkan kunci SSH baru dan menambahkannya ke panduan github ssh-agent", selalu meminta saya untuk frasa sandi. Bahkan setelah menambahkannya. Perilaku itu merusak aliran penyebaran maven saya karena pada mvn release:performtahap itu mencoba untuk checkout tag rilis tanpa memberikan frasa sandi. Jadi hanya menghapus frasa sandi menyelesaikan masalah ini.
Fernando Miguel Carvalho
-3

Masukkan perintah git ini di lokasi repos Anda " ssh-keygen -p " Ini akan meminta Anda untuk memasukkan lokasi keyfile, frasa sandi lama, dan frasa sandi baru (yang dapat dibiarkan kosong tanpa frasa sandi). Jangan masukkan apa pun dengan kata sandi baru dan itu akan menghapus kata sandi

Bharti
sumber
1
Meninggalkan kata sandi kosong tidak aman dan banyak pengembang perusahaan tidak akan dapat memiliki kata sandi kosong karena pembatasan. Ini solusi yang lemah, bukan solusi untuk masalah OP.
cbaldan
lumpuh mungkin, tetapi hanya untuk penggunaan lokal, Enak dan cepat ™
Jim P