Apakah ada alasan teknis mengapa ssh-agent tidak memiliki fitur timeout tidak aktif / idle seperti sudo?

9

Ada beberapa diskusi singkat tentang ssh-agent -tfitur yang ada di [1], dan ada posting sejauh 2001 pada debian-devel [2] yang menginginkan fitur batas waktu tidak aktif. Ada diskusi serupa di sini di SE [3] untuk kontes.

Saya harus bertanya-tanya bagaimana sisa planet ini melindungi kunci ssh - apakah saya kehilangan sesuatu yang jelas untuk ini menjadi titik sakit bagi saya, dan tampaknya tidak ada orang lain? Secara khusus saya sedang memikirkan interaksi ssh scripted, seperti dengan ansible. Tampaknya hari ini, pilihan Anda adalah:

  • Atur masa hidup kunci Anda di agen ke periode waktu yang sangat lama, misalnya. 1 jam atau apa pun, waktu maksimum skrip Anda mungkin terjadi (saya ragu banyak orang membiarkan waktu tunggu sudo re-auth mereka diperpanjang selama itu!) - tetapi seahorse/ gnome-keyring-daemonnyaris tidak banyak mendukung ini [4]
  • Mengasuh naskah lama Anda dan tetap memasukkan kembali frasa sandi Anda setiap 5/10/15 menit: sekarang Anda dapat dengan mudah ditonton memasukkan frasa sandi Anda 20 kali sehari
  • Meretas solusi buatan sendiri untuk meniru fitur yang hilang ini, mungkin bersama dengan TMOUTshell var Anda (terima kasih kepada orang-orang di freenode #openssh IRC untuk saran itu)
  • Tidak memiliki seumur hidup kunci yang ditetapkan sama sekali, yaitu agen Anda menyimpan kunci Anda dimuat selamanya atau sampai Anda membunuh / reboot

Jika Anda menggunakan waktu tunggu agen ssh singkat, frasa sandi yang kuat, dan file kunci yang berbeda untuk setiap jenis peran yang Anda otentikasi: ini mengarah ke hari yang sangat membuat frustrasi!

Saya telah bereksperimen dengan gpgkey2ssh dan smartcards, tetapi ini tidak benar-benar menyelesaikan masalah khusus ini: Saya masih ingin fungsionalitas ssh-agent dan saya tidak ingin harus auth-resh setiap 5 menit hanya untuk mencegah kunci privat saya diekspos dalam memori saat komputer saya idle.

Apakah saya salah?

[1] Mengkonfigurasi batas waktu default untuk agen SSH

[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html

[3] /server/518312/putty-pageant-forget-keys-after- Period-of-inactivity

[4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231

csirac2
sumber
1
Bukan jawaban, tetapi, ya, ada beberapa tantangan teknis seputar cara mendeteksi tidak aktif sesi ketika ssh-agentagnostik dengan jenis sesi yang menjadi bagiannya (misalnya sesi tty, sesi X11, atau yang lainnya). Satu hal yang ingin saya katakan jika skrip otomatis Anda mungkin tidak boleh tergantung pada kunci yang dimuat dalam agen Anda. Mereka mungkin masing-masing harus memiliki kunci pribadi masing-masing, yang diotorisasi melalui perintah paksa pada server yang sesuai untuk menjalankan hanya perintah jarak jauh khusus yang harus dijalankan setiap skrip. Tentu saja itu akan membuat Anda menjalankan itu dari cron dll ...
Celada
Saya tidak berharap ssh-agenttahu kapan sesi tidak aktif, tetapi setidaknya memulai batas waktu dari setiap kali operasi penandatanganan terakhir terjadi, bukan hanya kapan saja ssh-agentdiluncurkan. Selain itu, saya sudah menggunakan akun pengguna dan keyfile yang terpisah untuk setiap peran skrip, sudoer hanya memungkinkan 1 atau 2 perintah untuk sudo jika perlu, dan saya telah melihat lshelluntuk mengunci semuanya lebih jauh. Tetapi semua itu masih tidak membebaskan saya dari kebutuhan untuk melindungi keyfile saya: hanya karena sudo zfs sendsatu-satunya perintah yang diizinkan untuk kunci yang diberikan, itu adalah perintah yang sangat kuat bagi siapa pun yang memegang kunci itu!
csirac2
Solusi lain: gunakan opsi ControlMaster/ ControlPath/ ControlPersist(lihat man ssh_config) untuk skrip Anda. Setidaknya jika hanya terhubung ke satu host.
derobert
Itu saran yang menarik dan memang mengajarkan saya sesuatu (terima kasih!) Tetapi sepertinya tidak menyelesaikan apa pun jika saya masih akan ssh-agentmenyimpan kunci saya sampai saya reboot (yang mungkin beberapa minggu).
csirac2

Jawaban:

2

Jika ini menyangkut Anda maka Anda dapat dengan mudah menggunakan xscreensaver-command -watchantarmuka untuk menjalankan ssh-add -Dketika layar terkunci. Periksa halaman manual untuk contoh yang sangat sederhana.

Marco d'Itri
sumber