macOS 10.12 Sierra tidak akan melupakan kata sandi sf keyfile saya

25

Setelah membuat id-rsafile kunci terenkripsi baru dengan ssh-keygendan menggunakannya untuk pertama kalinya, saya tidak bisa membuat macOS melupakan frasa sandi. Ini mirip dengan bagaimana membuat OS X tidak ingat pertanyaan kunci sandi ssh tapi lebih buruk.

Saya mencoba me-reboot, membunuh ssh-agent, mengunci semua gantungan kunci saya tetapi masih tersimpan di suatu tempat. Namun, saya tidak dapat menemukannya di gantungan kunci apa pun. Ini tampaknya sangat tidak aman. Jawaban untuk kata sandi kunci pribadi SSH yang tidak pernah dihapus dengan Keychain / ssh-agent juga tidak membantu.

Bahkan, dialog yang dulu muncul menanyakan apakah Anda ingin menyimpan frasa sandi atau tidak sepertinya tidak ada lagi.

hogliux
sumber
Apakah Anda memeriksa apakah itu benar-benar terenkripsi?
John Keates
Ya. Cukup yakin itu seperti ssh yang meminta kata sandi saat pertama kali saya menggunakannya. Dapatkah seseorang benar-benar mereproduksi ini?
hogliux
Yah, itu bekerja seperti itu dengan setup saya juga, itu cara ssh / ssh-agent dikonfigurasi.
John Keates
Itu benar jika Anda mengklik kotak centang untuk memberi tahu macOS untuk menyimpan frasa sandi di gantungan kunci. Namun, jika Anda tidak mengklik kotak centang itu macOS harus selalu meminta frasa sandi. Tetapi bahkan jika Anda mengkliknya, Anda selalu dapat menghapusnya lagi di utilitas gantungan kunci. Sejak Sierra kotak dialog tidak muncul lagi dan tidak ada entri dalam utilitas gantungan kunci.
hogliux
Ini adalah kotak dialog yang saya bicarakan yang sepertinya tidak ada lagi: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux

Jawaban:

27

Untuk menonaktifkan penyimpanan frasa sandi di gantungan kunci Anda harus menambahkan baris berikut ke file ~ / .ssh / config :

Host *
UseKeyChain no

Jika Anda sudah memiliki frasa sandi yang tersimpan di gantungan kunci, Anda dapat menghapusnya menggunakan perintah:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Jika Anda ingin memiliki perilaku seperti di OS X El Capitan atau sebelumnya (mis. Frasa sandi disimpan hingga keluar atau mulai ulang) cukup tambahkan ke ~ / .ssh / config:

AddKeysToAgent yes

Anda tidak perlu memulai ssh-agent.

mbamac
sumber
1
Jawaban ini secara permanen menyelesaikan masalah! Jadi saya menandai ini sebagai jawaban yang benar. Terima kasih!
hogliux
pengeditan yang disarankan: ubah Library/Keychains/<UUID>/menjadi ~/Library/Keychains/<UUID>/untuk kejelasan :)
Mohamed Hafez
saran edit diterima :)
mbamac
20

Berkat Clive, saya memiliki pemahaman yang lebih baik tentang 'fitur' baru ini. Ketika Anda mengetik frasa sandi Anda, Sierra menambahkannya ke Gantungan Kunci Anda tetapi tidak ke agen ssh. Jika identitas Anda tidak ada di ssh-agent, tidak ada cara untuk mengelolanya ssh-add. Untuk mengelola (mis. Menghapus) identitas Anda dari Gantungan Kunci, Anda perlu menambahkan identitas Anda ssh-agentdengan menggunakan ssh-add. Setelah Anda menambahkan identitas ssh-agentAnda, Anda dapat menggunakannya ssh-add -K -duntuk menghapusnya dari keduanya ssh-agentdan Keychain. Jika Anda ingin identitas Anda ditambahkan ke ssh-agent setiap kali Anda menggunakan ssh, tambahkan:

AddKeysToAgent yes

untuk Anda .ssh/config. Ini akan memastikan bahwa ssh-agentselalu memiliki identitas Anda.

Gene Frenkler
sumber
Hanya tindak lanjut. Jika Anda menambahkan 'UseKeyChain no' ke .ssh / config Anda, itu akan membuat Keychain tidak menambahkan kata sandi Anda. Anda ingin menyimpan 'AddKeysToAgent yes' di ssh-agent akan menjaga kata sandi Anda sampai Anda reboot atau menggunakan ssh-add -d.
Gene Frenkler
Catatan ini membutuhkan penggunaan OpenSSH yang dikirim oleh Apple. Patch ini tidak termasuk dalam minuman rumahan padahomebrew/dupes/openssh: stable 7.3p1
Ryan Gibbons
3
ssh-add -K -d

Ini dapat menghapus frasa sandi yang sebelumnya disimpan di gantungan kunci. Sejak macOS 10.12 Sierra, untuk menghindari frasa sandi yang disimpan di gantungan kunci lagi, pastikan untuk melakukannya ssh-addterlebih dahulu.

Clive Lin
sumber
Iya nih. Ini digunakan untuk bekerja pada versi macOS Sierra sebelumnya. Tapi tidak berfungsi lagi. macOS Sierra masih mengingat kata sandi tersebut.
hogliux
1
BAIK. Investigasi lebih lanjut. Memang lupa sekali tetapi akan langsung kembali ke gantungan kunci setelah menggunakannya di mana saja (ssh, scp, git dll). Orang asing yang baik hati mengirimi saya email secara langsung dan menemukan bahwa frasa sandi sepertinya disimpan di ~ / Library / Gantungan Kunci / <SOME-UUID> /keychain-2.db. Tetapi bahkan ketika mengunci gantungan kunci login saya (dan semua gantungan kunci lainnya), os x tidak akan meminta kata sandi gantungan kunci saya ketika mengakses frasa sandi. Tampaknya itu tidak benar.
hogliux
Memang sepertinya di Sierra frasa sandi disimpan di lokasi gantungan kunci itu dan bukan gantungan kunci Login biasa.
m1keil