Ssh में sierra पर लॉगिन चाबी का गुच्छा अनलॉक करने में असमर्थ


7

मेरे पास एक स्क्रिप्ट है जो ssh को मैक में दर्शाती है। मूल स्क्रिप्ट, जो एल कैपिटन पर काम करती थी, इस के साथ किचेन को अनलॉक करेगी:

security unlock-keychain -p mypassword

उपरोक्त कमांड सिएरा पर त्रुटि देता है इसलिए मैंने इसे इस पर अपडेट किया:

security unlock-keychain -p mypassword ~/Library/Keychains/login.keychain

ऊपर दिया गया कमांड काम करता है, लेकिन तब जब मैं कीचेन को सूचीबद्ध करता हूं, तो लॉगिन किचेन अभी भी नहीं है और मेरी स्क्रिप्ट मेरे कोड पर हस्ताक्षर करने की कोशिश करने में विफल रहती है क्योंकि यह प्रमाणपत्रों तक नहीं पहुंच सकती है।

(~)$ security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/System.keychain"

यह सब मेजबान पर एक टर्मिनल विंडो में पूरी तरह से काम करता है, लेकिन मुझे एसएसएच में दूरस्थ रूप से काम करने की आवश्यकता है।

किसी भी मदद या सुझाव के लिए धन्यवाद।

अद्यतन 10 अक्टूबर, 2016: मैंने ssh प्रमाणीकरण को पासवर्ड से rsa कुंजी में बदल दिया और इसने काम करना शुरू कर दिया। लॉगिन किचेन तक पहुँचने के बाद, मुझे ssh शेल में त्रुटि मिलनी शुरू हो गई: SecKey API लौटा: -25308 कोडसिने से। यह एक अनुमतियाँ त्रुटि निकला। जब मैंने इसे एक टर्मिनल में होस्ट पर आज़माया, तो किचेन के एक डायलॉग ने मुझे एक्सेस करने की अनुमति देने के लिए कहा।


चाबी का गुच्छा अनलॉक हो सकता है लेकिन अनुमति मांगने के लिए यह यूआई को संकेत देने वाला था। मैं इसी तरह के मुद्दे पर फंस रहा हूं जैसे कि stackoverflow.com/questions/39868578/… । क्या आपको कोई समाधान या समाधान मिलता है?
जयातुबी

जवाबों:


9

आपका लॉगिन किचेन सर्च लिस्ट में नहीं आता है, यानी जब आपने इसे चेक किया, तो यह सिर्फ सिस्टम किचेन को दो बार दिखाता है। कोई लॉगिन चाबी का गुच्छा:

(~)$ security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/System.keychain"
(~)$ security list-keychains -d user -s login.keychain
(~)$ security list-keychains
"/Users/USERNAME/Library/Keychains/login.keychain-db"
"/Library/Keychains/System.keychain"

-25308 त्रुटि कोड देखने के लिए आप सुरक्षा कमांड का उपयोग कर सकते हैं। इस मामले में, यह कहता है "उपयोगकर्ता सहभागिता की अनुमति नहीं है"। यदि आप SSH के माध्यम से (या जेनकिंस के माध्यम से) अपने ऐप पर हस्ताक्षर करने का प्रयास कर रहे हैं तो यह विशिष्ट है।

security error -25308
Error: 0xFFFF9D24 -25308 User interaction is not allowed.

आपको एक गैर-संवादात्मक शेल के माध्यम से अपने एप्लिकेशन के कोडिंग को सक्षम करने के लिए एक सुरक्षा कमांड करने की आवश्यकता है:

security set-key-partition-list -S apple: -k <Password> -D <Identity> -t private <your.keychain>

यहां आपके एप्लिकेशन पर हस्ताक्षर करने के लिए "पूर्ण" जेनकिंस / एसएसएच अनुकूल स्क्रिप्ट है:

MY_KEYCHAIN="temp.keychain"
MY_KEYCHAIN_PASSWORD="secret"
CERT="certificate.p12"
CERT_PASSWORD="certificate secret"

security create-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Create temp keychain
security list-keychains -d user -s "$MY_KEYCHAIN" $(security list-keychains -d user | sed s/\"//g) # Append temp keychain to the user domain
security set-keychain-settings "$MY_KEYCHAIN" # Remove relock timeout
security unlock-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Unlock keychain
security import $CERT -k "$MY_KEYCHAIN" -P "$CERT_PASSWORD" -T "/usr/bin/codesign" # Add certificate to keychain
CERT_IDENTITY=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | sed -e 's/[^"]*"//' -e 's/".*//') # Programmatically derive the identity
CERT_UUID=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | awk '{print $2}') # Handy to have UUID (just in case)
security set-key-partition-list -S apple-tool:,apple: -s -k $MY_KEYCHAIN_PASSWORD -D "$CERT_IDENTITY" -t private $MY_KEYCHAIN # Enable codesigning from a non user interactive shell
### INSERT BUILD COMMANDS HERE ###
security delete-keychain "$MY_KEYCHAIN" # Delete temporary keychain

-25308 मुद्दे का हल खोजने और इसे https://sinofool.net/blog/archives/322 पर पोस्ट करने के लिए Apple समर्थन के साथ 3 सप्ताह बिताने के लिए बोचुन बाई को चिल्लाएं


स्टीफन, उस स्पष्टीकरण के लिए धन्यवाद। SSH में पासवर्ड के बजाय RSA कुंजी पर स्विच करने पर मेरी मूल समस्या हल हो गई थी, लेकिन मैं अंत में यह समझने के लिए आभारी हूं कि क्या हो रहा है और भविष्य में इसी तरह की समस्याओं के डिबगिंग के लिए तरीके सीखें - अगर और जब Apple सुरक्षा से संबंधित परिवर्तन करता है।
mw2785

धन्यवाद, स्टीफन, मेरे मामले में यह गलत था jenkins बिल्ड पर कोडसिग्न परInternComponent। security set-key-partition-listचाल चली!
ग्रिगोरी एंटिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.