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-agent
untuk 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-add
mencari kunci pribadi di .ssh
folder 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-agent
dengan bendera kill -k
:
$ ssh-agent -k
Seperti yang dijelaskan dalam ssh-agent
manual :
-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>h
untuk <n>
jam, <n>m
untuk <n>
menit, dan seterusnya.
Menurut ssh-agent
manual :
-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 -a
dan 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.