Membuat kunci SSH saya yang dilindungi kata sandi kedaluwarsa atau habis waktu setelah beberapa saat

12

Saya memiliki kunci SSH pribadi yang saya gunakan untuk otentikasi yang disimpan di ~ / .ssh / id_rsa . Ketika saya ssh ke server, saya diminta kata sandi untuk membuka kunci:

masukkan deskripsi gambar di sini

Saya suka ini. Saya juga suka saya bisa ssh lagi dan lagi dan itu tidak meminta saya untuk kata sandi saya.

Yang tidak saya sukai adalah saya tidak diharuskan memasukkan kata sandi kunci saya berhari-hari atau bahkan berminggu-minggu kemudian. Saya dapat mengunci layar saya atau mematikannya dan saya masih tidak perlu memasukkan kata sandi kunci saya. Satu-satunya waktu tampaknya kadaluwarsa kata sandi adalah ketika saya logout (yang jarang saya lakukan).

Bagaimana cara mendapatkan kata sandi kunci untuk kedaluwarsa setelah beberapa saat, memaksa saya untuk memasukkan kata sandi lagi untuk otentikasi? Membuatnya jadi mungkin setelah 1 jam, kuncinya dilupakan secara otomatis.

Michael Kropat
sumber

Jawaban:

4

Daripada mengutak-atik ssh-agent (yang sekarang membutuhkan jumlah peretasan yang konyol), saya sangat menyarankan untuk mengubah pengaturan pada gantungan kunci (login) default Anda. Saya menggunakan 'kunci tidur' yang sangat membantu serta 'kunci setelah 4 jam' karena saya tidak ingin diminta kecuali saya benar-benar afk.

Buka Akses Rantai Kunci dan klik kanan rantai masuk untuk mengubah pengaturan: Pengaturan Keamanan Keychain

Atau jika Anda lebih suka baris perintah:

security set-keychain-settings -lu -t 14400

Ini akan menghasilkan setidaknya satu prompt tambahan untuk membuka kunci kunci itu sendiri (memerlukan kata sandi login Anda) serta prompt untuk kunci apa pun yang Anda coba gunakan ... tapi itu mengalahkan penonaktifan IMO Perlindungan Integritas Sistem.

Dave Gregory
sumber
Ini bukan opsi di El Capitan untuk saya, dan perintah commandline sepertinya tidak membuat perbedaan, apakah Anda tahu jika ada opsi serupa di El Capitan di suatu tempat?
Ian
1
Cukup yakin saya bisa melakukan ini pada El Cap - Saya baru saja memeriksa dan kedua metode (UI dan cmdline) tentu masih bekerja pada Sierra. Saya hanya bisa melakukannya di gantungan kunci masuk, bukan Sistem atau iCloud.
Dave Gregory
9

Catatan : dalam versi OS X yang lebih baru Anda harus menonaktifkan Perlindungan Integritas Sistem agar jawaban ini berfungsi. (Terima kasih kepada @Dave Gregory dan @Jaap karena telah menunjukkan ini.)

Buka /System/Library/LaunchAgents/com.openssh.ssh-agent.plist(dalam versi yang lebih lama:) org.openbsd.ssh-agent.plistdi editor teks. Menggantikan:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

dengan:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

Ini akan kedaluwarsa kunci setelah 30 menit.

Mulai ulang. Tunggu, reboot?!? Ini bukan Windows! Ya, reboot.

Nah, Anda bisa mencoba menguraikan instruksi untuk mengubah pengaturan dengan cepat , tapi semoga berhasil.

Michael Kropat
sumber
1
Pedant seperti saya akan mengganti "1800" dengan "30m" karena membuatnya sedikit lebih mudah dibaca. Lihat FORMAT TIME di sshd_config (8) untuk format lengkap.
Tony Williams
@ Tony Williams keren! diperbaiki
Michael Kropat
Ini sepertinya tidak cocok untuk saya di Yosemite; ada orang lain
Dave Gregory
Saya menemukan solusi untuk Yosemite yang tidak melibatkan penonaktifan Perlindungan Integritas Sistem; ditambahkan sebagai jawaban di bawah ini.
Dave Gregory
1
Terima kasih atas info @ Jaap. Saya tidak menggunakan OS-X sehari-hari saat ini sehingga saya tidak dapat memverifikasi apa pun secara pribadi, tetapi untuk mencoba dan menjadi pelayan yang baik dari T&J ini, saya memperbarui jawaban saya berdasarkan info Anda dan mengubah jawaban yang diterima menjadi Dave Gregory's karena menonaktifkan Perlindungan Integritas Sistem tampaknya tidak disarankan dalam banyak kasus.
Michael Kropat
7

Anda perlu mengatur kehidupan kunci. Biasanya default untuk selamanya.

Saat Anda menjalankan, ssh-addAnda ingin menggunakan -topsi. Jika Anda menginginkan kehidupan kunci satu jam maka itu ssh-add -t 1h. Format waktu dapat dilihat di sshd_confighalaman manual tetapi sederhananya adalah angka yang diikuti oleh s, m, h, d, atau w untuk detik, menit, jam, hari atau minggu.

ssh-adddapat dimasukkan ke dalam file .bashrc Anda dan itu hanya akan meminta Anda untuk memvalidasi kunci sekali. Bahkan ketika kunci "kadaluwarsa" itu tidak dihapus - itu hanya meminta kata sandi lagi ketika upaya dilakukan untuk menggunakannya.

Opsi lainnya adalah mengubah opsi peluncuran ssh-agentyang disimpan /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistdan menambahkan di -tsana. (Saya gunakan LaunchControluntuk mengubah ini tetapi Anda bisa melakukannya dengan tangan jika Anda berhati-hati.)

Tony Williams
sumber
Saya lebih suka tidak harus ingat untuk menjalankan ssh-addsecara manual sebelum saya menjalankan sshsetiap waktu. Ini menarik, tetapi saya benar-benar mencari sesuatu yang otomatis.
Michael Kropat
+1 terima kasih telah menunjukkan saya ke org.openbsd.ssh-agent.plistsolusi
Michael Kropat
1

Solusi lain adalah:

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

Dengan solusi ini, Anda tidak harus memilih batas waktu untuk semua gantungan kunci Anda - cukup mengganggu ketika Anda ingin mengatur batas waktu beberapa detik untuk merekam kata sandi kunci pribadi Anda - dan Anda tidak harus menonaktifkan SIP Anda untuk mengedit / Sistem / Library / LaunchAgents / org.openbsd.ssh-agent.plist.

symsymmas
sumber