Saya ingin menjalankan ssh-agent (dengan opsi seumur hidup maksimum), tetapi tidak menambahkan kunci apa pun saat startup, tetapi menambahkannya sesuai permintaan.
Seperti pertama kali saya masuk ke beberapa server, ia harus meminta frasa sandi, lain kali (kecuali jika saya menunggu lebih dari satu jam) itu harus terhubung dengan bersih:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Saya tidak ingin mengingat secara manual tentang menjalankan 'ssh-add' setiap kali. (misalnya memasukkan frasa sandi hanya untuk ssh dan "Oh, tidak ingat, perlu mengetik ulang").
Bagaimana mengkonfigurasi ssh untuk secara otomatis menambahkan kunci ke ssh-agent jika pengguna memberikan frasa sandi?
Jawaban:
ssh mendukung menambahkan kunci ke agen pada penggunaan pertama (sejak versi 7.2). Anda dapat mengaktifkan fitur itu dengan memasukkan yang berikut ini ke
~/.ssh/config
:Ini juga berfungsi saat menggunakan alat turunan, seperti git.
Dari changelog 7.2 :
sumber
Anda dapat menipu dan menaruh sesuatu seperti
alias ssh='ssh-add -l || ssh-add && ssh'
di.bashrc
/.profile
. Ini berjalan pertamassh-add -l
, yang dapat mengembalikan 0 (ada kunci pada agen), 1 (tidak ada kunci) atau 2 (tidak ada agen yang berjalan); jika mengembalikan 0,ssh
akan berjalan; jika 1,ssh-add
akan berjalan dan kemudianssh
; jika 2,ssh-add
akan gagal danssh
tidak akan dijalankan. Ganti&&
dengan;
jika Anda inginssh
menjalankan bahkan ketika tidak ada agen yang berjalan.sumber
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Anda bahkan bisa meletakkannya dalam satu lingkaran untuk semua kunci ssh Anda dan menghasilkan alias. Retasan kotor, tetapi berhasil.Sampai auto-call-ssh-add didukung oleh ssh, saya menambahkan ini di saya
.bashrc
, berdasarkan proposal Kovensky:Alias dibuat hanya jika identitas tidak ditambahkan, dan alias menghancurkan dirinya sendiri setelah dijalankan.
Dengan cara ini perintah ssh biasa digunakan setelah identitas ditambahkan.
sumber
ssh-add -t ...
) kunci yang ditambahkan ke ssh-agent mungkin hilang dengan tiba-tiba, tetapi dan alias akan tetap ada karena kuncinya masih dalam memori.Saya menggunakan fungsi shell berikut:
Pertama-tama ia menyelesaikan konfigurasi untuk host yang saya coba sambungkan, kemudian menambahkan kunci yang mungkin untuk host tersebut ke ssh-agent jika belum ditambahkan dan akhirnya terhubung ke host. Saya yakin itu bisa diperbaiki, jadi saya terbuka untuk umpan balik.
sumber