ssh keys ssh-agent bash dan ssh-add

28

Saya baru mengenal kunci ssh. Siapa pun dapat menjelaskan bagaimana ssh-agent bashdan ssh-addbekerja?

Saya perlu memahami internalnya di masa depan.

maneeshshetty
sumber
Sudahkah Anda mencoba hit Google teratas untuk semua istilah ini?
Daniel Beck
Ya saya lakukan. Saya tidak mendapatkan informasi yang berguna. Saya buruk
maneeshshetty

Jawaban:

44

Sebuah agen adalah program yang membuat kunci Anda dalam memori sehingga Anda hanya perlu membuka mereka sekali , bukan setiap kali. ssh-agent melakukan ini untuk kunci SSH.

Metode yang biasa untuk memulai ssh-agent adalah:

  • eval `ssh-agent`- ini menjalankan agen di latar belakang, dan menetapkan variabel lingkungan yang sesuai untuk instance shell saat ini .

    ( ssh-agent , ketika dimulai tanpa argumen, menampilkan perintah untuk ditafsirkan oleh shell Anda.)

  • exec ssh-agent bash- memulai instance baru dari bashshell, menggantikan yang sekarang.

    (Dengan satu atau lebih argumen, ssh-agent tidak menghasilkan apa-apa, tetapi memulai perintah yang ditentukan: dalam kasus ini, bashshell, tetapi secara teknis bisa berupa apa saja.)

    Metode kedua kadang-kadang lebih disukai, karena secara otomatis membunuh ssh-agent ketika Anda menutup jendela terminal. (Saat memulai dengan eval, agen akan tetap berjalan, tetapi tidak dapat diakses.)

Namun, ini hanya memulai agen kosong. Untuk benar-benar membuatnya berguna, Anda perlu menggunakan ssh-add , yang membuka kunci Anda (biasanya ~/.ssh/id_*) dan memuatnya ke agen, membuatnya dapat diakses oleh koneksi ssh atau sftp .

grawity
sumber
3
Apakah ada cara untuk memulai ssh-agent di beberapa sesi bash, sekali?
Asim
9

Selain itu, Anda mungkin ingin menambahkan beberapa tombol di awal sesi.

Edit ~/.bashrcfile Anda , dan tambahkan:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Periksa kunci Anda dengan ssh-add -l

Anda dapat menghentikan sesi ssh-agent saat ini dengan ssh-agent -k

Sesuatu yang perlu diketahui tentang ssh-agent dan .bashrc adalah jangan memuat terlalu banyak kunci. Jumlah percobaan default untuk ssh daemon terbatas pada 6. Ini dapat dimodifikasi /etc/ssh/sshd_configdengan MaxAuthTriesnilainya.

pengguna1293603
sumber
1
Bagaimana dengan kata sandi kunci pribadi saat meluncurkan ssh-adddengan "&"? Apakah Anda mengasumsikan file kunci pribadi tidak terlindungi?
Luciano
Kode di atas meminta frasa sandi dua kali, sekali ketika memeriksa apakah ssh-agent tersedia dan sekali lagi memuat kunci pribadi.
Tapan Chandra