Simpan identitas yang ditambahkan oleh ssh-add agar tetap ada

19

Saya baru-baru ini mengatur opensshsehingga saya bisa menggunakannya dengan git.

Dalam proses pengaturannya (sesuai artikel ini ) saya menjalankan perintah:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Beberapa waktu kemudian, setelah saya logout dan kembali saya mencoba menggunakan git pushsaya mendapat kesalahan. Solusi untuk kesalahan ini menjalankan lagi perintah yang sama.

Tolong beritahu saya bagaimana saya bisa

  • Terus ssh-agentjalankan, jadi saya tidak harus memulai yang baru
  • Ingat kunci yang saya tambahkan sehingga saya tidak perlu menambahkannya setiap waktu

Hanya untuk memperjelas, saya menggunakan zsh sehingga fitur bash tertentu tidak akan berfungsi di .zshrc saya.

tanda waktu
sumber
Anda harus mulai dengan memahami untuk apa ssh-agentdan bagaimana cara kerjanya sebelum mencoba untuk menyesuaikannya dengan use case terpilin Anda.
Jakuje
Kesalahan apa yang Anda dapatkan?
Jakuje
@ Jakuje Kesalahannya adalah tentang pubkey yang hilang dan bertanya "Sudahkah Anda mulai ssh-agent?".
timotree

Jawaban:

21

Untuk apa ssh-agentdan bagaimana cara kerjanya?

Itu ssh-agentmembuat kunci Anda didekripsi aman dalam memori dan di sesi Anda. Tidak ada cara yang masuk akal dan aman untuk menyimpan kunci yang didekripsi di antara reboot / login ulang.

OK, bagaimana saya bisa mengotomatiskannya?

Otomatiskan ssh-agentstartup

Menambahkan

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

ke ~/.bashrcskrip startup Anda atau lainnya ( ~/.zshrc).

Otomatis menambahkan kunci

Kunci dapat secara otomatis ditambahkan pada penggunaan pertama, saat Anda menambahkan

AddKeysToAgent yes

untuk Anda ~/.ssh/config.

Untuk informasi lebih lanjut, ~/.ssh/configlihat man ssh_config.

Jakuje
sumber
Jadi Anda mengatakan jika saya mengaktifkan AddKeysToAgent, maka setiap kali saya mengetiknya eval "$(ssh-agent -s)"akan menambahkan kunci saya?
timotree
Jika agen berjalan dan Anda sshmendukung opsi ini, maka ya.
Jakuje
Bisakah Anda menjelaskan bagaimana saya akan mengotomatiskan memulai ssh-agentitu?
timotree
Pada dasarnya, seperti yang dijelaskan dalam jawaban lainnya. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje
Apakah itu berfungsi dengan zsh?
timotree
3

Tambahkan ini ke ~/.bashrc

Ini berarti ssh-agent akan dimulai secara otomatis ketika Anda membuka sesi lain tanpa terminal Anda

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

jika Anda perlu kunci untuk ditambahkan ke agen juga tambahkan ini

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi
Savitoj Singh
sumber
1
Ini adalah jawaban yang baik tetapi tidak menjelaskan apa yang dilakukan perintah.
timotree