Magit, सिस्टम के ssh एजेंट का उपयोग कैसे करें और पासवर्ड न पूछें


19

मैंने googled और मैगिट के लिए FAQ और विकी पढ़ा है, लेकिन अभी भी यह पता लगाने में असमर्थ है, मुझे लगता है कि सभी विंडोज के बारे में उत्तर हैं ...

मैं अपने चल रहे ssh- एजेंट सत्र का उपयोग करने के लिए मैगिट को कैसे कॉन्फ़िगर कर सकता हूं और एक पुश करते समय अपना पासवर्ड न पूछें।

मैं linux चला रहा हूं, और मेरे टर्मिनल के साथ ssh- एजेंट स्टार्टअप है और फिर मेरी कुंजी अनलॉक करें, जो मुझे हर बार पासवर्ड दर्ज किए बिना मुझे git पुश आदि करने की अनुमति देता है।

Env:
आर्क लिनक्स
24.4 Emacs

ssh- एजेंट के साथ कुंजियाँ जोड़ी गईं, पहले टर्मिनल को खोलने के लिए।

संपादित करें: मेरा मतलब था पासफ़्रेज़ का उपयोग करना, आप ssh कुंजी, एट अल के लिए जानते हैं।
और मैं Bitbucket पर जोर दे रहा हूं, लेकिन मुझे विश्वास है कि मुख्य समस्या यह है कि मैगिट मेरे ssh- एजेंट से बात नहीं कर रहा है / पहचान नहीं रहा है।
शायद सेट करने के लिए कुछ कॉन्फिग है, यह बताने के लिए कि मैं इसे चला रहा हूं ??


दरअसल इसी सवाल के साथ आया था।
emacsomancer

रिमोट यूआरएल क्या है? http: // या git: //?
नूस्कामी _

इस मामले में git@bitbucket.org, सेटअप इस तरह: url = git@bitbucket.org:
Andres

क्या आप बता सकते हैं कि जब आप कर रहे हैं तो Emacs क्या कर रहा है M-x getenv SSH_AGENT_PID? M-x getenv SSH_AUTH_SOCK
न्सुकामी _

SSH_AGENT_PID = 602 SSH_AUTH_SOCK = /tmp/ssh-13kI6AaYvgji/agent.601
Andres

जवाबों:


13

खैर यह एक खरगोश छेद से अधिक हो गया है, हालांकि मैं ... और क्या मैं वहाँ इकट्ठा कर सकते हैं इस विशिष्ट मुद्दे के लिए एक बेहतर समाधान नहीं है, इस संयोजन के साथ डेस्कटॉप, ssh- एजेंट, emacs।

समस्या 1
XFCE सत्र के साथ स्वयं ssh- एजेंट शुरू कर रहा था, वास्तव में कहीं भी ऐसा कहे बिना, जिसके कारण सिस्टम में 1 अप्रयुक्त वैश्विक ssh- एजेंट और मेरे शेल विशिष्ट अनलॉक किए गए एजेंट हो गए।
एक अलग डीई पर आप उसी समस्या के साथ चल सकते हैं, और एजेंट ऑटो स्टार्ट को अक्षम करने के लिए बारीकियों को खोजने की आवश्यकता होगी।

समाधान 1
निष्पादन से स्टार्टअप स्टार्टअप-एजेंट को अक्षम करने के लिए इस आदेश को चलाएँ

xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled -n -t bool -s false

समस्या 2
अब Emacs के पास कोई SSH_AGENT_PID और SSH_AUTH_SOCK चर सेट नहीं है, इसलिए लोड किए गए वातावरण पर कुछ भी नहीं। जाहिर है कि मैगिट अभी भी चाबी मांगता है क्योंकि हमें नए एसश-एजेंट के बारे में पता नहीं है ।

समाधान 2
हमें Emacs को इन नए चर को वातावरण से लाने की आवश्यकता है, लेकिन निश्चित रूप से, कोई सीधा आगे रास्ता नहीं है।
दर्ज करें: निष्पादन-पथ-से-शेल जो आपको अपने शेल से पर्यावरण चर लाने की अनुमति देता है। इसलिए।

  1. अपने पसंदीदा तरीके से निष्पादन-पथ-से-शेल पैकेज स्थापित करें ।
  2. अपने init.el में निम्न कोड जोड़ें ताकि जब आप Emacs शुरू करें तो यह लोड हो जाए।

(require 'exec-path-from-shell) (exec-path-from-shell-copy-env "SSH_AGENT_PID") (exec-path-from-shell-copy-env "SSH_AUTH_SOCK")

SSH _ ** चर को देखने के सुझाव के लिए धन्यवाद दोस्तों, जिसने मुझे सही दिशा की ओर इशारा किया।


किसी विशेष कारण से आप XFCE के एजेंट से संतुष्ट नहीं हैं और अपना खुद का चलाना चाहते हैं? त्यागना सरल समाधान की तरह प्रतीत होगा।
त्रिवेणी

मैं हमेशा एक्सएफसीई नहीं चलाता हूं, न ही मुझे इस बात की परवाह है कि डेस्कटॉप इसे कैसे प्रबंधित करता है, मैं उस प्लगइन को पसंद करता हूं जो इसे ओह-माय-ज़श से संभालता है। इसलिए मेरे लिए डिफ़ॉल्ट उपयोग के मामले को छोड़ना आसान है। (मुझे पता है कि मैं एजेंट के बारे में लगभग पर्याप्त नहीं जानता ... लेकिन कुछ ऐसा नहीं है जो मैं वास्तव में वैसे भी सोचने में समय बिताना चाहता हूं)
एंड्रेस

शायद Zsh को उस मामले को पहचानना चाहिए जब एक एजेंट पहले से ही चल रहा है, और इसके बजाय उसे स्थगित करें; लेकिन जाहिर है, यह यहाँ विषय बंद हो रही है।
त्रिवेणी

1
हो सकता है कि ssh- Agency को यूनिक्स जैसी प्रणालियों पर भी काम करने के लिए बढ़ाया जाए।
npostavs 16

7

आलसी के लिए एक और उपाय सिर्फ एक पैकेज का उपयोग करना है जो वास्तव में इस मामले को संभालता है (Emacs 'कीचेन-संबंधित वातावरण एबेल्स सेट करना):

  1. स्थापित करें और अपने init.el पैकेज किचेन -एनवायरमेंट में जोड़ें
  2. भागो M-x keychain-refresh-environmentऔर अब यह काम करना चाहिए।
  3. (keychain-refresh-environment)अपने init.el में रखें , इसलिए समाधान Emacs को पुनरारंभ करने के बाद काम करता है

और यह सब, अपने ssh- एजेंट को कॉन्फ़िगर किया गया है और चल रहा है।

पैकेज की टिप्पणी से वास्तव में अच्छा विवरण:

किचेन एक स्क्रिप्ट है जो ssh-agent और gpg-agent को मैनेज करती है। यह आमतौर पर शेल के इनिशियलाइज़ेशन फ़ाइल से चलाया जाता है। यह आपके गोले और क्रॉन जॉब्स को एक ही ssh-Agent और / या gpg- एजेंट को साझा करने की अनुमति देता है।

जब किचेन चलाया जाता है, तो यह रनिंग एजेंट के लिए जाँच करता है, अन्यथा यह उन्हें शुरू करता है। यह एजेंटों के पर्यावरण चर को ~ / .keychain / के अंदर फाइलों में सहेजता है, ताकि बाद के गोले इन फाइलों को स्रोत बना सकें।

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

अपनी इनिट फ़ाइल में फ़ंक्शन 'कीचेन-रिफ्रेश-एनवायरनमेंट' चलाने के लिए। यदि चाबी का गुच्छा अभी तक नहीं चलाया गया है जब आप Emacs शुरू करते हैं तो आप बाद में उस फ़ंक्शन को अंतःक्रियात्मक रूप से कॉल भी कर सकते हैं।

इसे भी देखें: http://www.funtoo.org/wiki/Keychain


1
यह वही है जो मुझे पहले से उपयोग करने की आवश्यकता थी keychain
xji

1

एफडब्ल्यूआईडब्ल्यू, keychainअब एक --systemdस्विच है, जो सिस्टमैब उपयोगकर्ता के वातावरण में चर इंजेक्ट करेगा।

सबसे सरल समाधान मुझे मिला eval "$(keychain --eval --quiet --noask --systemd keys...)"एक स्क्रिप्ट को जोड़ने के लिए जो सिस्टम यूनिट से Emacs सर्वर को शुरू करने के लिए चलाया गया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.