Simpan frasa sandi kunci SSH menggunakan gantungan kunci dengan opsi --noask

10

Saya ingin menggunakan gantungan kunci untuk mengatur prompt frasa sandi untuk kunci SSH, tetapi harus 1) menanyakannya hanya ketika saya benar-benar menggunakan kunci dan 2) menyimpannya untuk beberapa waktu setelah itu. Saat ini saya memiliki 2 opsi:

  1. $ eval `keychain --eval --agents ssh id_rsa` - yang akan selalu meminta frasa sandi saat memulai tetapi kemudian akan menyimpannya.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - itu tidak akan meminta apa pun saat memulai tetapi kemudian akan terus meminta frasa sandi setiap kali saya akan menggunakan kunci itu.

Apakah ada cara untuk menggabungkan keunggulan metode ini?

anlar
sumber

Jawaban:

9

Versi ssh-agentterbaru dan OpenSSH membuatnya mudah:

  1. Mulai normal ssh-agentdengan batas waktu default untuk tombol yang ditambahkan (misalnya 60 menit):

    eval `ssh-agent -t 60m`
    
  2. Konfigurasikan Anda sshuntuk menambahkan kunci yang sebenarnya digunakan ke agen. Tambahkan baris baru ke ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Fitur ini dalam OpenSSH 7.2 terbaru. Di versi sebelumnya, Anda perlu menambahkan kunci ke agen secara manual, jika batas waktu Anda terlampaui, tetapi bisa secara otomatis diotomatiskan menggunakan fungsi bash, seperti ini:

    ssh() {
      /bin/ssh -o BatchMode=yes $* || \
        ssh-add path/to/the-key && /bin/ssh $*
    }
    

    Idenya: Cobalah untuk terhubung menggunakan kunci dalam mode batch (tidak akan meminta frasa sandi dan gagal, jika kunci tidak ada di sana) dan setelah gagal, tambahkan kunci ke agen dan jalankan kembali perintah ssh.

Jakuje
sumber