ssh- एजेंट सेट नहीं हो रहा है (SSH_AUTH_SOCK, SSH_AGENT_PID env vars सेट)


13

मैंने कुबंटु 12.04 पर एक दोस्त के लिए एक नया उपयोगकर्ता खाता स्थापित किया। जब वह उपयोग करता है sshतो उसे यह त्रुटि मिलती है:

आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सका

हम sshकुछ बैश स्क्रिप्ट में चल रहे हैं।

चीजों की विस्तृत विविधता को देखने के बाद जो उस त्रुटि को जन्म दे सकती है, मैं इस समाधान में आया हूं:

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

फिर वह sshउम्मीद के मुताबिक कमांड (और स्क्रिप्ट्स को बैश) चला सकता है।

उन दो आदेशों को चलाने से पहले, एनवी चर एक टर्मिनल में सेट नहीं हैं:

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

कमांड चलाने के बाद, env वेरिएबल्स को उम्मीद के मुताबिक सेट किया जाता है। हालांकि, वे सेट नहीं रहते (उदाहरण के लिए, एक अलग शेल में या रिबूट करने के बाद)।

मैं जानना चाहता हूं कि अपने कंप्यूटर को कैसे सेट किया जाए ताकि उसे एनवी चर सेट करने के लिए उन दो कमांडों को चलाना न पड़े। मुझे उन्हें अपने कंप्यूटर (कभी) पर चलाने की आवश्यकता नहीं है। अब तक मैं यह नहीं देख रहा हूं कि हमारी मशीनों के बीच क्या अंतर है।

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

एक एजेंट को स्थापित करने के लिए दो मुख्य तरीके हैं: पहला यह है कि एजेंट एक नया उपकमांड शुरू करता है जिसमें कुछ पर्यावरण चर निर्यात किए जाते हैं, जैसे ssh- एजेंट xterm &। दूसरा यह है कि एजेंट आवश्यक शेल कमांड प्रिंट करता है (या तो श (1) या csh (1) सिंटैक्स उत्पन्न किया जा सकता है) जिसे कॉलिंग शेल में खाली किया जा सकता है, उदाहरण के ssh-agent -sलिए बॉर्न-टाइप शेल जैसे शल (1) या ksh (1) और ssh-agent -ccsh (1) और व्युत्पन्न के लिए eval ।

स्थापित करने acctऔर रिबूट करने के बाद , यह निम्नलिखित है lastcomm:

ssh-agent         F    newuser __         0.12 secs Wed Aug  7 11:02
ssh-agent         F    newuser __         0.00 secs Wed Aug  7 20:34
ssh-agent         F    newuser __         0.02 secs Wed Aug  7 20:02
ssh-agent         F    newuser __         0.01 secs Thu Aug  8 12:39
ssh-agent         F    newuser __         0.02 secs Thu Aug  8 07:45

मैन पेज से:

F - एक फोर्क के बाद निष्पादित कमांड, लेकिन निम्नलिखित निष्पादन के बिना

मुझे यकीन नहीं है कि अगर यह महत्वपूर्ण है।


2
उबंटू के तहत, ssh-agentआम तौर पर से शुरू किया जाता है /etc/X11/Xsession.d/90x11-common_ssh-agent। इससे दूर करके ही दम लिया जा सकता use-ssh-agentहै /etc/X11/Xsession। क्या वे फाइलें सही हैं? क्या एजेंट को शुरू किया गया और फिर उसे मार दिया गया या कभी शुरू नहीं हुआ? (स्थापित करें acctऔर lastcommलॉग इन करने के बाद देखें कि कौन से कार्यक्रमों की सराहना की गई।)
गिल्स एसओ- बुराई को रोकें '

@ गिलेस-धन्यवाद। वे दो फाइलें मेरी मशीन और उसकी मशीन पर समान हैं। हम दोनों X11/Xsession.options:use-ssh-agentऔर है X11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent। मैं कोशिश करूंगा acctऔर lastcommआगे। साभार
माउंटेनएक्स

अद्यतन सवाल
MountainX

अभी भी एक समाधान की तलाश ...
माउंटेनएक्स

कृपया lastcommकेवल ssh-agentप्रक्रिया ही नहीं, बल्कि पूर्ण सत्र के लिए आउटपुट पोस्ट करें । यह देखना है कि विभिन्न कार्यक्रमों को किस क्रम में शुरू किया जाता है।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


0

आपने उल्लेख किया है कि आपका उपयोगकर्ता sshआईएनजी है, स्थानीय रूप से लॉग इन नहीं कर रहा है। तो use-ssh-agentमें /etc/X11/Xsession.optionsएक रेड हेरिंग है: यह, SSH सत्र पर निष्पादित नहीं किया जाएगा केवल जब स्थानीय स्तर पर एक X11 जीयूआई डेस्कटॉप में प्रवेश करने (या VNC या आरडीपी अधिक जैसे कुछ आभासी X11 सत्र का उपयोग)।

इसके बजाय, आपको जांचना चाहिए कि libpam-sshक्या सिस्टम पर स्थापित है। यह SSH निजी कुंजी पासफ़्रेज़ का उपयोग करके किसी उपयोगकर्ता को प्रमाणित करने के लिए कॉन्फ़िगर किया जा सकता है, लेकिन यह वैकल्पिक है और आपको ~/.ssh/login-keys.d/उस कार्यक्षमता के लिए विशेष रूप से कुंजी की आवश्यकता होगी ।

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


3

के लिए

$ eval `ssh-agent -s`

"स्टार्टअप स्क्रिप्ट", आपके सत्र, और अंततः टर्मिनल जहां आप पर्यावरण की अपेक्षा करते हैं, में काम करने के लिए निर्माण, उस स्क्रिप्ट के वंशज (द्वारा forkऔर exec) होना चाहिए । इसका कारण यह है कि ssh-agent -sजब मूल्यांकन किया जाता है, का आउटपुट शेल कॉलिंग मेंeval पर्यावरण चर सेट करता है । वहाँ फार्म, उन्हें सौंप दिया जा सकता है, और वे रास्ते में भी खो सकते हैं।

इसलिए यदि ssh-agentस्क्रिप्ट ए द्वारा लॉगिन के दौरान कहीं चलाया जाता है, लेकिन टर्मिनल बी जिसमें आप शेल स्क्रिप्ट शुरू करते हैं , वह ए का वंशज नहीं है , तो आप बी में पर्यावरण नहीं देख सकते हैं।

यदि आप सेवा के ssh-agentरूप में शुरू कर चुके हैं systemd --user, तो आपको इसके बजाय सम्मेलन का उपयोग करना पड़ सकता है: ssh-agent चर को निर्दिष्ट न करें, लेकिन एजेंट शुरू करते समय और सत्र शुरू करते समय सामान्य ज्ञान का उपयोग करें। जैसे, मेरी शक्ल ~/.config/systemd/user/ssh-agent.serviceऐसी है:

[Unit]
Description=SSH agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

और मेरे ~/.profileपास मेरी रेखा है

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

ध्यान दें कि %tपूर्व ${XDG_RUNTIME_DIR}में उत्तरार्द्ध में मेल खाती है ।

नोट: मैं इस बारे में खुश नहीं हूँ!


1

मुझे यहाँ उत्तर मिला:

http://www.bernatchez.net/userauth.html

Ubuntu पर ssh-add उपयोगिता प्रमाणपत्र फ़ाइलों को लोड करने में विफल रहती है। यह तब होता है जब एजेंट गनोम-कीरिंग द्वारा कार्यान्वित किया जाता है। फिक्स सूक्ति घटक की ssh घटक का उपयोग बंद करने के लिए है। चूंकि इनिशियलाइज़ेशन प्रक्रिया वास्तव में एक सच्चे ssh- एजेंट को शुरू करती है और फिर gnome-keyring-ssh.desktop को लॉन्च करती है जो इसे लेने के लिए AUTH_SOCKET को क्लोब करता है, हम gnome-keyring-ssh.desktop को अक्षम करके मूल ssh-एजेंट पर वापस लौट सकते हैं।

ग्नोम-कीरिंग-ssh.desktop अक्षम करें:

cd /etc/xdg/autostart/
sudo emacs gnome-keyring-ssh.desktop

निम्न लाइन को डेस्कटॉप फ़ाइल में जोड़ें और इसे सहेजें, फिर रिबूट करें:

X-GNOME-Autostart-enabled=false

0

आपने उल्लेख किया है कि

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

इच्छानुसार काम करता है। तो आपको बस उन लोगों को सही समय पर, .bash_profile या .xsession में निष्पादित करने की आवश्यकता है। डिबग स्टेटमेंट्स जोड़ना जैसे (date; env|sort) >> /tmp/logवे चलने पर आपको समझने में मदद करते हैं।

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