मैं ओएस एक्स मावेरिक्स में एसएसएच कीचैनइंटरग्रेशन को कैसे अक्षम कर सकता हूं?


18

मैं ओएस एक्स मावेरिक्स में एसएसएच कीचेनइंटरग्रेशन के साथ कुछ मुद्दे रख रहा हूं। मैंने ऐप्पल की सहायता साइट के चारों ओर प्रहार करने की कोशिश की है, लेकिन किसी ने भी मेरा मुद्दा नहीं देखा है। मैंने बहुत से ऐसे लोगों को देखा है जो यह नहीं जानते कि एसएसएच का उपयोग कैसे किया जाए, ताकि मैं दूसरे समुदाय की कोशिश करूं।

सबसे पहले, मेरा कॉन्फ़िगरेशन काम कर रहा है। मैं अपनी कुंजी जोड़ी का उपयोग करने में सक्षम हूं और मेजबान को ssh का उपयोग करने की आवश्यकता है, क्योंकि मेरी साख एजेंट में कैश की गई है। मैं अपनी कैश की गई साख "ssh-add -l" के माध्यम से देख पा रहा हूँ, जैसा कि अपेक्षित था। मुझे एक ओएस एक्स-शैली संवाद द्वारा अपना पासवर्ड इनपुट करने के लिए कहा गया है, एक चेकबॉक्स के साथ जो "मेरे किचेन में पासवर्ड याद रखें" कहता है। मैं आमतौर पर इस चेकबॉक्स को अनदेखा करता हूं, लेकिन जब मैं इसकी जांच करता हूं, तो मुझे चाबी का गुच्छा में संग्रहीत मेरी कुंजी दिखाई देती है। किचेन में संग्रहीत यह कुंजी कभी-कभी उपयोग नहीं की जाती है, हालांकि, चूंकि मेरे पास इस पर एक पासवर्ड है। कम से कम यही है कि मैंने जो कुछ पढ़ा है, उससे कई चीजों की चमक बढ़ गई है। जब मैं संवाद में अपना पासवर्ड दर्ज करता हूं, और एजेंट में कुंजी कैश हो जाती है, तो मैं सफलतापूर्वक कनेक्ट करता हूं, लेकिन "कीचेन को पासवर्ड सहेजना विफल" बताया जाने से पहले नहीं। इस त्रुटि संदेश को देखने से मुझे और जांच करने में मदद मिली; मुझे हर बार कनेक्ट होने पर त्रुटि प्राप्त करना पसंद नहीं है।

मैनहोल SSH_CONFIG (5) को देखते समय चीजें दिलचस्प हो जाती हैं । किचेन से निपटने के दो विकल्प मौजूद हैं, Apple के लिए विशिष्ट: AskPassGUI, और KeychainIntegration। आप इन्हें ~ / .ssh / config में टॉगल करने में सक्षम हैं, और ऐसा करने से कुछ रोचक परिणाम मिलते हैं।

AskPassGUI को बिना किसी सेटिंग के सेट करने पर, आपको अपने टर्मिनल में इनपुट टेक्स्ट लाइन के बजाय, OS X- शैली डायलॉग के साथ संकेत नहीं दिया जाएगा। कोई बड़ाई नहीं। लेकिन अगर आप ऐसा करते हैं, तो ssh-Agent आपके क्रेडेंशियल्स को कैश नहीं करेगा। यह स्पष्ट रूप से टूट गया है, और निराशा होती है क्योंकि मैं आसानी से पाठ प्रॉम्प्ट के साथ रह सकता था अगर क्रेडेंशियल्स को कैश किया गया था।

इस तरह के रूप में, एक कड़ी त्रुटि फेंकता नहीं करने के लिए KeychainIntegration सेट करना:

~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options

मेरा प्रश्न, बस, यह है: क्या वास्तव में SSH के लिए OS X किचेन इंटीग्रेशन अक्षम करने का एक तरीका है?


अच्छा सवाल है, मेरे पास तत्काल जवाब नहीं है, लेकिन आशा है कि वोटों के साथ, यह किसी के रडार पर पॉप जाएगा। मैं OS X के अपने निर्माण पर बग की पुष्टि सिर्फ एक लाइन कॉन्फिग फाइल के साथ कर सकता हूं - मान को हां या ना में सेट करने में विफल रहता है।
bmike

स्पष्टीकरण का एक बिंदु: मुझे केवल "सेविंग पासवर्ड सेविंग टू किचेन फेल" संदेश प्राप्त होता है जब ssh-add सफलतापूर्वक कैश क्रेडेंशियल। मैं इसे हर कनेक्शन के प्रयास पर नहीं देखता, जो इसे कैसे पढ़ता है, जब मैं इसे फिर से पढ़ता हूं। कैश्ड क्रेडेंशियल्स के साथ, यह बस चुपचाप जोड़ता है, जैसा कि आप उम्मीद करेंगे।
जिम

जवाबों:


7

SSH के वर्तमान संस्करण के लिए स्रोत कोड के आधार पर जो कि Mavericks ( यहां स्थित है ) के साथ शिपिंग है , ऐसा प्रतीत होता है कि कॉन्फ़िगरेशन विकल्प की कार्यक्षमता KeychainIntegrationअभी तक लागू नहीं हुई है। मैं इस धारणा को ओपनश / readconf.h की सामग्री के आधार पर बना रहा हूं , जो KeychainIntegrationविकल्प का संदर्भ नहीं देता है । हालांकि, यह askpassguiविकल्प को संदर्भित करता है। उस फ़ाइल में "कीवर्ड" संरचना की जांच करने से वास्तव में पता चलता है कि keychainintegrationविकल्प मौजूद नहीं है (जिसका अर्थ है कि oBadOption(NULL) सेशन कोड वापस आ जाएगा)।

एक और सुराग जिसका अर्थ है कि आप जिस कार्यशीलता की इच्छा रखते हैं वह उस तरीके से लागू नहीं होती है जिस तरह से मैन पेज निर्दिष्ट करता है वह फाइल है: ओपेनश / कीचैन । सी। स्रोत कोड वास्तव में दिखाता है कि defaultsसिस्टम (यानी, संपत्ति सूची फ़ाइलों) का उपयोग संबंधित सेटिंग्स को संग्रहीत करने के लिए किया जा रहा है KeychainIntegration। विशेष रूप से, store_in_keychainफ़ंक्शन संदर्भ से लाइनें KeychainIntegration:

/* Bail out if KeychainIntegration preference is -bool NO */
if (get_boolean_preference("KeychainIntegration", 1, 1) == 0) {
    fprintf(stderr, "Keychain integration is disabled.\n");
    goto err;
}

यहाँ इसी get_boolean_preferenceफ़ंक्शन है। ध्यान दें कि यह CFPreferencesCopyAppValue"org.openbsd.openssh" एप्लिकेशन पहचानकर्ता से बूलियन प्राप्त करने के लिए उपयोग कर रहा है:

#if defined(__APPLE_KEYCHAIN__)

static int get_boolean_preference(const char *key, int default_value,
int foreground)
{
int value = default_value;
CFStringRef keyRef = NULL;
CFPropertyListRef valueRef = NULL;

keyRef = CFStringCreateWithCString(NULL, key, kCFStringEncodingUTF8);
if (keyRef != NULL)
    valueRef = CFPreferencesCopyAppValue(keyRef,
        CFSTR("org.openbsd.openssh"));
if (valueRef != NULL)
    if (CFGetTypeID(valueRef) == CFBooleanGetTypeID())
        value = CFBooleanGetValue(valueRef);
    else if (foreground)
        fprintf(stderr, "Ignoring nonboolean %s preference.\n", key);

if (keyRef)
    CFRelease(keyRef);
if (valueRef)
    CFRelease(valueRef);

return value;
}

#endif

इसका मतलब यह हो सकता है कि आप KeychainIntegrationइस डिफॉल्ट कमांड को निष्पादित करके अपने लिए कार्यक्षमता को निष्क्रिय कर सकते हैं :

defaults write org.openbsd.openssh KeychainIntegration -bool NO

या इसे सभी उपयोगकर्ताओं के लिए सेट करें:

sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO


2
आपने गहरी खाई, और मैं इसकी सराहना करता हूं। जैसा कि आपने सुझाव दिया था, मैंने इसके माध्यम से सेटिंग KeychainIntegrationकरने की कोशिश की । तो जैसे मैं सेट करेंगे बर्ताव में कोई साख कैश नहीं किया जाता है, और मैं पदबंध के लिए हर समय के लिए प्रेरित किया हूँ -। उपयोगी से कम है। फिर भी, मुझे लगता है कि आपने सवाल का जवाब दे दिया है, और जवाब है, बस, "इसे अक्षम किया जा सकता है, लेकिन यह पूरी तरह से लागू नहीं है, और आप शायद परिणाम पसंद नहीं करेंगे।" NOdefaultssshAskPassGUI~/.ssh/config
जिम

बहुत बहुत धन्यवाद मैं इस पर एक उत्तर खोजने के लिए सभी को खोज रहा था। चूँकि मेरे पास एक कस्टम .zshrc फ़ाइल है जिसे मैं मैक और लिनक्स के बीच पोर्ट करता हूँ यह मुझे पागल कर रहा था कि चाबी का गुच्छा ssh- एजेंट और अतिरिक्त कुंजियों के प्रबंधन का नियंत्रण ले रहा था।
LF4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.