Saya mengalami beberapa masalah dengan SSH KeychainIntegration di OS X Mavericks. Saya sudah mencoba mencari-cari di situs dukungan Apple, tetapi belum melihat ada yang mengalami masalah saya. Saya telah melihat banyak orang yang tampaknya tidak tahu bagaimana menggunakan SSH dengan baik, jadi saya memutuskan untuk mencoba komunitas lain.
Pertama, konfigurasi saya berfungsi. Saya dapat menggunakan pasangan kunci dan ssh saya untuk host sesuai kebutuhan, dengan kredensial saya di-cache di agen. Saya dapat melihat kredensial cache saya melalui "ssh-add-l", seperti yang diharapkan. Saya diminta untuk memasukkan kata sandi dengan dialog gaya OS X, dengan kotak centang yang mengatakan "Ingat kata sandi di gantungan kunci saya". Saya biasanya mengabaikan kotak centang ini, tetapi ketika saya memeriksanya, saya melihat kunci saya disimpan di gantungan kunci. Namun, kunci yang disimpan di gantungan kunci ini sepertinya tidak pernah digunakan karena saya memiliki kata sandi. Setidaknya itulah yang telah saya kumpulkan dari berbagai hal yang saya baca. Ketika saya memasukkan kata sandi saya ke dalam dialog, dan kunci di-cache dalam agen, saya berhasil terhubung, tetapi tidak sebelum diberitahu "Menyimpan kata sandi ke gantungan kunci gagal". Melihat pesan kesalahan ini yang mendorong saya untuk menyelidiki lebih jauh; Saya tidak suka mendapat kesalahan setiap kali terhubung.
Hal-hal menjadi menarik ketika melihat halaman manual SSH_CONFIG (5) . Ada dua opsi untuk berurusan dengan gantungan kunci, khusus untuk Apple: AskPassGUI, dan KeychainIntegration. Anda dapat mengaktifkan ini di ~ / .ssh / config, dan dengan begitu menghasilkan beberapa hasil yang menarik.
Mengatur AskPassGUI ke no, Anda tidak akan lagi diminta dengan dialog gaya OS X, sebagai gantinya, baris teks input di terminal Anda. Bukan masalah besar. Tetapi jika Anda melakukan ini, maka ssh-agent tidak akan men-cache kredensial Anda. Ini jelas-jelas rusak, dan membuat frustrasi karena saya bisa dengan mudah hidup dengan prompt teks jika kredensial di-cache.
Mengatur KeychainIntegration ke no, ssh melempar kesalahan, sebagai berikut:
~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options
Pertanyaan saya, sederhana, apakah ini: Apakah ada cara untuk benar-benar menonaktifkan Integrasi Keychain OS X untuk SSH?
Jawaban:
Berdasarkan kode sumber untuk versi SSH saat ini yang dikirimkan bersama Mavericks (terdapat di sini ), tampaknya fungsionalitas opsi konfigurasi
KeychainIntegration
belum diimplementasikan. Saya membuat asumsi ini berdasarkan pada isi openssh / readconf.h , yang tidak merujukKeychainIntegration
opsi. Namun demikian, referensiaskpassgui
opsi. Memeriksa struct "kata kunci" dalam file itu memang menunjukkan bahwakeychainintegration
opsi tidak ada (yang pada gilirannya menyiratkan bahwaoBadOption
kode op (NULL) akan dikembalikan).Petunjuk lain yang menyiratkan bahwa fungsionalitas yang Anda inginkan tidak diterapkan dengan cara yang ditentukan halaman manual adalah file: openssh / keychain.c . Kode sumber sebenarnya menunjukkan bahwa
defaults
sistem (yaitu, file Daftar Properti) sedang digunakan untuk menyimpan pengaturan terkaitKeychainIntegration
. Secara khusus, baris daristore_in_keychain
referensi fungsi KeychainIntegration:Berikut adalah
get_boolean_preference
fungsi yang sesuai . Perhatikan bahwa menggunakanCFPreferencesCopyAppValue
boolean untuk mendapatkan dari pengenal aplikasi "org.openbsd.openssh":Ini mungkin menyiratkan bahwa Anda dapat menonaktifkan
KeychainIntegration
fungsi untuk diri sendiri dengan melakukan perintah default ini:defaults write org.openbsd.openssh KeychainIntegration -bool NO
atau untuk mengaturnya untuk semua pengguna:
sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO
sumber
KeychainIntegration
untukNO
melaluidefaults
saat Anda disarankan.ssh
kemudian berperilaku seolah-olah aku setAskPassGUI
di~/.ssh/config
- tidak ada kredensial cache, dan saya diminta untuk passphrase sepanjang waktu. Kurang bermanfaat. Tetap saja, saya pikir Anda sudah menjawab pertanyaan itu, dan jawabannya adalah, "Itu bisa dinonaktifkan, tetapi itu belum sepenuhnya diterapkan, dan Anda mungkin tidak akan menyukai hasilnya."