कोडिन का उपयोग कर ओएसएक्स ऐप पर हस्ताक्षर करने की कोशिश कर रहे "उपयोगकर्ता इंटरैक्शन की अनुमति नहीं है"

हमारा स्वचालित निर्माण जेनकींस पर चल रहा है। एसएसएच के माध्यम से दासों को निष्पादित किया जा रहा है, निर्माण स्वयं दासों पर चल रहा है।

मुझे एक त्रुटि मिलती है:

00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.

मैंने यहां तक ​​कि अन्य पदों में मैंने जो भी सुझाव देखा है, मैंने कोशिश की है:

  • कुंजीपटल अनलॉक करने के लिए साइन इन करने से पहले सुरक्षा अनलॉक-कीचेन का उपयोग करना।
  • हस्ताक्षर कुंजी को अपने स्वयं के कीचेन में ले जाना।
  • साइनिंग कुंजी को लॉगिन कीचेन में ले जाना।
  • हस्ताक्षर कुंजी को सिस्टम कीचेन में ले जाना।
  • मैन्युअल रूप से कुंजी-कुंजी वाले कुंजी-सूची में सूची-कीचेन सेट करना।

सभी मामलों में, मुझे एक ही त्रुटि मिलती है।

इस मुद्दे का निदान करने के प्रयास में, मैंने अपने स्थानीय टर्मिनल पर "सुरक्षा अनलॉक-कीचेन" कमांड चलाने की कोशिश की और पाया कि यह वास्तव में कीचेन अनलॉक नहीं करता है - अगर मैं कीचेन एक्सेस में देखता हूं, तो लॉक प्रतीक अभी भी वहां है। यह मामला है कि क्या मैं कमांड लाइन पर पासवर्ड पास करता हूं या फिर मैंने इसे इसके लिए संकेत दिया है। GUI का उपयोग करके एक ही कीचेन को अनलॉक करने से मुझे पासवर्ड के लिए संकेत मिलेगा और फिर इसे अनलॉक कर दिया जाएगा। इसके अतिरिक्त, अगर मैं "सुरक्षा लॉक-कीचेन" चलाता हूं, तो मैं आदेश चलाने के तुरंत बाद कुंजी लॉक को देखता हूं। इससे मुझे लगता है कि अनलॉक-कीचेन वास्तव में काम नहीं करता है। मुझे शेर पर एक ही व्यवहार का अनुभव होता है (जिसे हम बिल्ड गुलामों के लिए उपयोग कर रहे हैं) और मैवरिक्स (जिसे मैं विकसित कर रहा हूं।)

इसके बाद, मैंने सभी सुरक्षा आदेशों को -v जोड़ने का प्रयास किया:

list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
        "/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.

इससे, ऐसा लगता है कि सूची-कीचेन काम नहीं कर रहा है। शायद न तो काम करते हैं। : /

एक यहां समान प्रश्न है। समाधान दिलचस्प है - लॉन्चक्टल में सत्य "सत्रक्रेट" सेट करें। लेकिन मैं मास्टर पर निर्माण नहीं कर रहा हूं - दास बिल्ड मशीन पर एसएसएच से मेरी बिल्ड प्रक्रिया शुरू की गई है। हो सकता है कि जब आप "सत्र क्रिएट" चलाते हैं तो लॉन्चक्टल क्या कर रहा है, यह करने के लिए एक कमांड लाइन तरीका है?

0

15 उत्तर

एक कोड कमांड के रूप में सुरक्षा अनलॉक-कीचेन और codeign को कॉल करने का प्रयास करें। इससे मेरी मदद की। कुछ इस तरह:

security unlock-keychain -p  /Users//Library/Keychains/login.keychain && codesign --force --verify --verbose --sign "" 
0
जोड़ा
मेरे लिए वे वही नहीं हैं। मैं उन्हें चींटी sshexec के माध्यम से कॉल करता हूं और प्रत्येक बार जब यह एक नया एसएसएच सत्र बनाता है।
जोड़ा लेखक ZhekaKozlov, स्रोत
यदि आप वास्तव में चाहते हैं, तो आप एक एसएसएच सत्र के माध्यम से भी एक से अधिक पंक्तियां कर सकते हैं। तो ... यह अभी भी वही है, त्रुटियों के इलाज से अलग है।
जोड़ा लेखक Trejkaz, स्रोत
यह दो लाइनों पर ऐसा करने जैसा ही है। मुझे लगता है कि अंतर यह है कि यदि पहला आदेश विफल रहता है, तो यह दूसरा नहीं चलाएगा।
जोड़ा लेखक Trejkaz, स्रोत

खैर, मुझे लगता है कि मुझे आज अपने प्रश्न का उत्तर देना पड़ता है, क्योंकि ढाई दिनों में इसे छेड़छाड़ करने के बाद, मैंने कोशिश की चीजों में से एक काम किया है। मैं अभी उससे दूर वापस जा रहा हूं और उम्मीद करता हूं कि यह काम करता रहेगा।

अनिवार्य रूप से, ऐसा लगता है कि यह -d system पर वास्तव में काम नहीं कर रहा है। इसलिए यहां के आसपास के अन्य प्रश्नों के बहुत सारे जवाब शायद इसे प्रतिबिंबित करने के लिए अपडेट किए जाने चाहिए।

security -v list-keychains -s "$KEYCHAIN" "$HOME/Library/Keychains/login.keychain"
security list-keychains # so we can verify that it was added if it fails again
security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
codesign --sign "$SIGNER_IDENTITY" --force --signature-size 9600 \
         --resource-rules src/AppResourceRules.plist --timestamp --verbose \
         "$APP"
0
जोड़ा
उपरोक्त उदाहरण में @chakrit, मैं केवल कुंजीपटल पासवर्ड पास करता हूं, लॉगिन पासवर्ड नहीं। मुझे एहसास है कि बहुत से उपयोगकर्ताओं के लिए, लॉगिन कीचेन एकमात्र कीचेन है, लेकिन हमारे मामले में, हम मशीनों को बनाने के लिए सिंक्रनाइज़ करना आसान बनाने के लिए साइनिंग कुंजी को एक अलग कीस्टोर में रखते हैं। लेकिन हां, यह बहुत सी चीजें ऑटोमेटेड बिल्ड के लिए असुविधाजनक लगती हैं, जिससे मुझे आश्चर्य होता है कि ऐप्पल स्वचालित बनाता है या नहीं।
जोड़ा लेखक Trejkaz, स्रोत
तो कुछ स्क्रिप्ट के अंदर वास्तव में लॉगिन पासवर्ड संग्रहीत किए बिना एसएसएच के माध्यम से codeign तक पहुंचने का कोई तरीका नहीं है?
जोड़ा लेखक chakrit, स्रोत
@Trejkaz ओह ठीक है, कम से कम एक keychain पासवर्ड साझा करना बुरा नहीं है।
जोड़ा लेखक chakrit, स्रोत
स्वचालित रिमोट बिल्ड के मेरे उपयोग मामले में, .env फ़ाइल में कीचेन पासवर्ड संग्रहीत करना बुरा नहीं है, क्योंकि .env फ़ाइल में पहले से ही संवेदनशील कुंजी शामिल हैं। एडब्ल्यूएस और हेरोोकू। हमारे मामले में बिल्ड से संबंधित कोड साइन क्रेडेंशियल्स को नव निर्मित कीचेन में संग्रहीत किया जाता है जिसे बाद में निर्माण के बाद हटा दिया जाता है। फिर इसे अगले निर्माण के लिए फिर से बनाया गया है। हालांकि, लॉगिन कीचेन अभी भी खोला जाना चाहिए, इसलिए सुरक्षा अनलॉक-कीचेन -p पास login.keychain यहां गायब लिंक था। धन्यवाद!
जोड़ा लेखक Petrus Repo, स्रोत
धन्यवाद। मैं इसे कम करने में सक्षम हूं। निर्माण करने का प्रयास करने से पहले बस निम्न आदेश चलाएं: सुरक्षा -v अनलॉक-कीचेन -पी "$ KEYCHAIN_PASSWORD" "$ HOME/लाइब्रेरी/कीचेन्स/login.keychain"
जोड़ा लेखक pir800, स्रोत

तो मैंने यहां हर जवाब की कोशिश की और कुछ काफी जोड़ नहीं रहा था। अंततः मुझे पता चला कि जब मैंने अपनी सीआई सेवा को रिबूट किया था, तो यह एक अलग उपयोगकर्ता के तहत चल रहा था जैसा कि मैंने उम्मीद की थी। उस उपयोगकर्ता को बदलना जिसकी वास्तव में उनकी लॉगिन श्रृंखला में कुंजी तक पहुंच थी, सबकुछ ठीक हो गया। यह एक आम समस्या नहीं हो सकती है, लेकिन अगर यह दूसरों के साथ होती है, तो इस त्रुटि के लिए मेरे विशिष्ट कारण को दस्तावेज करना चाहता था।

0
जोड़ा

अन्य उत्तरों में से कोई भी मेरे लिए काम नहीं करता है।

What eventually saved me was this post

इसे समेटने के लिए, यह 5 मिनट के डिफ़ॉल्ट टाइमआउट के कारण हो सकता है, जो लंबे समय के बाद इस त्रुटि को ट्रिगर करेगा।

तै होना:

security set-keychain-settings -t 3600 -l ~/Library/Keychains/login.keychain
0
जोड़ा
एक्सेस बदलने के बाद भी यह हमेशा मेरे सिस्टम कीचेन एक्सेस को पुष्टि करें पर सेट करता है। : /
जोड़ा लेखक Alex Zavatone, स्रोत
एल कैपिटन पर, आप भी यूजर इंटरफेस के माध्यम से ऐसा कर सकते हैं। बस कीचेन ऐप खोलें, अपने कीचेन (लॉगिन, सिस्टम इत्यादि) पर राइट क्लिक करें और 'के लिए' चेंज सेटिंग्स 'से मेल खाने वाली किसी चीज़ पर क्लिक करें।
जोड़ा लेखक rubybeginner, स्रोत

मेरा कीचेन बंद कर दिया गया था। यह विरोध उस तथ्य को बदलने के लिए मेरी प्रगति ...

Keychain Access -> Keychain First Aid -> Repair, et voilá!

0
जोड़ा

सिस्टम कीचेन में अपनी चाबियाँ रखें

0
जोड़ा
सिस्टम कीचेन में कुंजियां कैसे डालें ....... कीचेन एक्सेस काम से पेस्ट कॉपी करेगा?
जोड़ा लेखक Ashish Karpe, स्रोत
ड्रैग और ड्रॉप अभी भी एक ही त्रुटि प्राप्त कर रहा था: === कॉन्फ़िगरेशन डीबग === निर्भरता की जांच करें रोगी पोर्टेबलपोर्ट का उपयोग करें com.abc.xyz360 'के लिए कोई प्रोफ़ाइल नहीं मिली: एक्सकोड को' प्रावधान प्रोफ़ाइल मिलान 'कॉम नहीं मिला .abc.xyz360 '। एसडीके 'आईओएस 10.2' में उत्पाद प्रकार 'एप्लिकेशन' के लिए कोड हस्ताक्षर की आवश्यकता है
जोड़ा लेखक Ashish Karpe, स्रोत
लेकिन यह अभी भी उपयोगकर्ता नाम और पासवर्ड पूछता है
जोड़ा लेखक Durai Amuthan.H, स्रोत
@AshishKarpe खींचें और छोड़ें
जोड़ा लेखक Alistra, स्रोत
यह कहता है कि आपके पास मशीन पर एक प्रावधान प्रोफ़ाइल स्थापित नहीं है, न कि आप @AshishKarpe कुंजी को याद कर रहे हैं
जोड़ा लेखक Alistra, स्रोत
काम नहीं करता और फिर, अगर मैं सभी तक पहुंच सेट करता हूं, अगली बार जब मैं एक्सेस की जांच करता हूं, तो यह पुष्टि करें पर वापस सेट हो जाता है।
जोड़ा लेखक Alex Zavatone, स्रोत

मैं भी यह लड़ रहा हूं। जब तक मैंने http://devnet.jetbrains.com/thread/311971 पर सुझाव की कोशिश नहीं की, तब तक कुछ भी मदद नहीं मिली। धन्यवाद अशर अग्रवाल!

जीयूआई के माध्यम से अपने बिल्ड यूजर को लॉग इन करें और कीचेन एक्सेस खोलें। अपनी हस्ताक्षर निजी कुंजी का चयन करें, राइट-क्लिक करें, जानकारी प्राप्त करें चुनें, एक्सेस कंट्रोल टैब में बदलें और "इस एप्लिकेशन तक पहुंचने के लिए सभी एप्लिकेशन को अनुमति दें" का चयन करें।

एक्सेस कंट्रोल टैब

0
जोड़ा
क्या किसी को कमांड लाइन से ऐसा करने का कोई तरीका पता है? मेरी रिमोट बिल्ड मशीन मुझे सुरक्षा कारणों के लिए स्क्रीन साझाकरण पर ऐसा करने नहीं देगी।
जोड़ा लेखक devios1, स्रोत
मुझे apple.stackexchange.com/a/34872/6052 के साथ/usr निर्देशिका को अनदेखा करना था "हमेशा अनुमति दें" सूची में codeign जोड़ें।
जोड़ा लेखक Heath Borders, स्रोत
सिर्फ एक नोट है कि इसके अलावा आपको पूरी सुरक्षा अनलॉक-कीचेन सामान भी करना है
जोड़ा लेखक cwd, स्रोत
इसके अतिरिक्त, आप लॉगिन से system से अपनी चाबियाँ ले जाना चाहेंगे ताकि जब आप दूरस्थ रूप से अपनी मशीन पर निर्माण करते हैं तो वे पहुंच योग्य होते हैं।
जोड़ा लेखक Krystian, स्रोत
यह मेरे लिए किया था।
जोड़ा लेखक Benjamin Allison, स्रोत
स्वचालन के लिए कमांड लाइन से ऐसा करने का कोई तरीका है? मेरा सीआई निर्माण पर्यावरण हर निर्माण पर स्वयं को पुनर्निर्माण करता है, इसलिए मैन्युअल रूप से लॉग इन करने का कोई मतलब नहीं है ..
जोड़ा लेखक Zaky German, स्रोत
मैं एल कैप पर हूं और उसी प्रक्रिया के रूप में मूल रूप से वर्णित मेरे लिए काम किया है। एकमात्र अपवाद यह है कि मैंने 14 अप्रैल की टिप्पणी पर वर्णित अनुप्रयोगों की सूची में codeign जोड़ा।
जोड़ा लेखक bmauter, स्रोत
@ डी 4 आरके मैं सहमत हूं। ऊपर मेरी टिप्पणी देखें।
जोड़ा लेखक bmauter, स्रोत
आपका स्वागत है। आप मेरे द्वारा किए गए सभी एप्लिकेशन को अनुमति देने के बजाय नीचे दिए गए एप्लिकेशन सूची में कोडिन जोड़ने पर भी विचार कर सकते हैं। यह मेरे स्क्रीनशॉट में पहले से ही है, लेकिन मुझे लगता है कि मूल रूप से यह नहीं था।
जोड़ा लेखक bmauter, स्रोत
हो सकता है कि मैं थोड़ा उलझन में हूं, लेकिन "इन अनुप्रयोगों द्वारा हमेशा एक्सेस की अनुमति दें" बॉक्स में "कोडइन" जोड़ने के लिए यह ठीक होना चाहिए। मुझे लगता है कि, अगर आपको केवल कोडिंग के लिए इसकी आवश्यकता है, तो सभी एप्लिकेशन को अनुमति देने की आवश्यकता नहीं है।
जोड़ा लेखक d4Rk, स्रोत
इसे साझा करने के लिए धन्यवाद! यह मेरी समस्या है कि मैं अपने एक्सकोड बॉट पर एक पोस्ट आर्काइव स्क्रिप्ट के साथ था।
जोड़ा लेखक Seth, स्रोत
यदि आप एल कैपिटन का उपयोग कर रहे हैं, तो एक्सेस कंट्रोल टैब पर जाने के लिए आपको कीचेन विंडो में पासवर्ड आइटम को डबल क्लिक करना होगा।
जोड़ा लेखक mlbright, स्रोत
मैंने ऐसा किया लेकिन सिस्टम इसे सहेज नहीं रहा है, अगर मैं इसे फिर से देखता हूं, तो यह फिर से "पुष्टि करें ..." की जांच की गई है। कोई विचार?
जोड़ा लेखक June, स्रोत
इसे साझा करने के लिए धन्यवाद!
जोड़ा लेखक Ruenzuo, स्रोत
विचित्र रूप से पर्याप्त, जब मैं सभी को अनुमति देता हूं पर कीचेन पहुंच सेट करता हूं, अगली बार जब मैं उस पर जानकारी प्राप्त करता हूं, तो यह पुष्टि करें पर वापस सेट हो जाता है, भले ही मैंने अपना व्यवस्थापक दर्ज किया हो उपयोगकर्ता नाम और पासवर्ड। : /
जोड़ा लेखक Alex Zavatone, स्रोत

मेरे लिए कुछ भी काम नहीं करता है, फिर से एक्सकोड को फिर से स्थापित करना होगा। जेनकिंस एक ही त्रुटि दे रहा है। यदि आप एक्सकोड इंस्टॉलेशन को ट्रैश में ले जाते हैं और पुनः इंस्टॉल करते हैं तो आप बहुत समय बचाएंगे। सुनिश्चित करें कि आप कोड कमांड कमांड लाइन से कम से कम एक बार चलाएं।

अगर आपको एक ही त्रुटि मिलती है तो भी 'अनलॉक कीचेन' सेट करने का प्रयास करें? जेनकींस के भीतर संपत्ति और अपने login.keychain को /Users/${USER}/Library/Keychains/login.keychain के अंतर्गत पथ दें

मुझे उम्मीद है कि उसके बाद भगवान तुम्हारे साथ रहेगा।

0
जोड़ा

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

0
जोड़ा

मेरे मामले में, यह एक चाबी के कारण 300 के डिफ़ॉल्ट टाइमआउट के साथ बनाया गया था और एक लंबे xcode संकलन 300 से अधिक समय तक चल रहा था। मेरे लिए कामकाज का आह्वान करना था:

security set-keychain-settings -t

अस्थायी कीचेन बनाने के तुरंत बाद।

0
जोड़ा

सिस्टम कीचेन पर अपनी चाबियाँ आयात करें। आप इस कमांड का उपयोग कर सकते हैं:

sudo security import YourKey.p12 -k /Library/Keychains/System.keychain -P PasswordToYourKey -T /usr/bin/codesign
0
जोड़ा

तो यह वह आदेश है जो काम करता है। -A मैक को पासवर्ड पूछने से रोकने के लिए है। System.keychain में आयात करने के लिए एक जीयूआई की आवश्यकता नहीं है।

sudo security import -k "/Library/Keychains/System.keychain" -P -A

0
जोड़ा
मुझे तुमसे मोहब्बत है! तुम एक जादूगर हो!
जोड़ा लेखक technophobia, स्रोत

मैं इन सभी सुझावों के माध्यम से भाग गया और अभी भी जेनकींस नौकरी में फास्टलेन के <कोड> जिम का उपयोग कर समस्याएं थीं। मैंने प्रमाण पत्र स्थापित किया था और कीचेन अनलॉक किया था, और जब मैं मैन्युअल रूप से कमांड लाइन पर codeign कमांड चलाता था तब दास पर कोडिंग करने में सक्षम था।

एक कामकाज के रूप में, यदि जेनकिंस एसएसएच के बजाय जेएनएलपी का उपयोग करके दास से जुड़ता है, तो आप कोडिंग करने में सक्षम होंगे।

0
जोड़ा

कीचेन अनलॉक करना पर्याप्त नहीं है। आपको निजी कुंजी का उपयोग "सभी ऐप्स को इस आइटम तक पहुंचने की अनुमति दें" पर भी सेट करना होगा। और कमांड लाइन से ऐसा करने के लिए कुंजी को पुनः आयात करने की आवश्यकता होती है। तो एक समय में चीजें लेने के लिए:

लॉक होने पर लॉगिन कीचेन अनलॉक करें। हालांकि इसे लॉक नहीं किया जाना चाहिए, लेकिन वैसे भी यहां आप यह कैसे करते हैं:

security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "~/Library/Keychains/login.keychain"

अगर किसी कारण से आपकी बिल्ड मशीन में लॉगिन कीचेन लॉक है, और आप उस पासवर्ड को स्क्रिप्ट में बेनकाब नहीं करना चाहते हैं, तो आपको एक अलग कीचेन का उपयोग करना चाहिए। आप स्पॉट पर एक बना सकते हैं और पिछले और निम्न कमांड में इसका उपयोग कर सकते हैं। स्पॉट पर एक बनाने के लिए:

security create-keychain -p 'temporaryPassword' MyKeychain.keychain
security list-keychains -d user -s login.keychain MyKeychain.keychain

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

security import  -k "~/Library/Keychains/login.keychain" -P  -A

-ए पैरामीटर वह है जो आपकी निजी कुंजी को "इस आइटम तक पहुंचने के लिए सभी ऐप्स को अनुमति दें" पर सेट करने के लिए तैयार करेगा।

तो इन सभी का उपयोग करके आप एक स्क्रिप्ट बनाने में सक्षम होना चाहिए जो एक रिलीज आईपीए बनाने के लिए आवश्यक प्रमाणपत्र स्थापित करता है और बिना किसी संकेत के हस्ताक्षर करता है। आप अपने repo में .p12 फ़ाइल को स्टोर कर सकते हैं, इसलिए कोई भी मशीन मैन्युअल सेटअप की आवश्यकता के बिना आपके आईपीए का निर्माण कर सकती है।

0
जोड़ा

मेरे लिए ऐसा होता है जब एक दूसरा कीचेन मैन्युअल रूप से जोड़ा जाता है और यह लॉक हो जाता है। कुछ कारणों से codeign लॉक कीचेन तक पहुंचने का प्रयास करता है और सर्किट लॉग इन कीचेन (और अनलॉक है) में विफल रहता है। दूसरे को अनलॉक करने से समस्या हल हो जाती है। बस मुझे समझ में नहीं आता है।

0
जोड़ा