मैं इस ssh- एजेंट समस्या को कैसे हल कर सकता हूं?


17

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

मेरी समस्या का एक लक्षण इस प्रकार है:

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

मैं यह कैसे कर सकता हूं कि मेरे से किसी भी पासफ़्रेज़ इनपुट के बिना git धक्का / खींच सकता है?

मुझे लगता है कि यहाँ कई चीजें सूक्ति-कीरिंग और ssh- एजेंट के साथ हैं, लेकिन इसे नीचे करने में सक्षम नहीं है।

ssh-addएक सत्र के दौरान चलने का मतलब है कि मुझे अब एसएसएच / गिट के लिए अपने पासफ़्रेज़ के लिए नहीं कहा गया है।

समस्या यह है कि मुझे ssh-addप्रत्येक सत्र के दौरान चलने की आवश्यकता होगी - मुझे याद आ रहा होगा कि लॉगिन पर ग्नोम की कीरिंग अनलॉक कैसे होनी चाहिए।

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

यह पहले सत्र के उसी सत्र के दौरान फिर से हुआ। मैंने किया git pullऔर मिला WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager

1
क्या आप export | grep GNOMEपरिणामों को चला और पोस्ट कर सकते हैं । क्या आपने इस बग को देखा है ?
डस्टर

एक प्रासंगिक बग की तरह दिखता है। चूंकि मुझे हमेशा चेतावनी दिखाई नहीं देती है, इसलिए मुझे यकीन नहीं है कि मुझे एक सरल समस्या है बस gnome-keyringलॉगिन पर स्वचालित रूप से अनलॉक करने के लिए।
eoinoc

संभवतः आपके पास सूक्ति-कीरिंग के अलावा एक और एजेंट है। किसके बारे में env | grep SSHऔरps -fp $SSH_AGENT_PID
स्टीफन चेज़लस

@StephaneChazelas मैंने आपको जो सुझाव दिया है, धन्यवाद। हां, मैंने जीवन को जटिल बना दिया है zshऔर tmuxचल रहा है (बस इसका उल्लेख है)।
10

जवाबों:


2

क्या होने वाला है:

आप एक सूक्ति सत्र शुरू करते हैं, उस सूक्ति-कुंजीयन डेमॉन का हिस्सा (जो एक ssh एजेंट के रूप में भी कार्य करता है) शुरू होता है और उस gnome सत्र के दौरान शुरू हुई किसी भी चीज़ का वातावरण उस ssh एजेंट से संपर्क करने के तरीके के बारे में जानकारी के साथ अद्यतन किया जाता है। डिफ़ॉल्ट रूप से लॉगिंग पर आपके द्वारा जारी पासवर्ड का उपयोग डिफ़ॉल्ट कीरिंग को अनलॉक करने के लिए किया जाता है।

जब आप ssh- एजेंट के रूप में gnome-keyring का उपयोग करते हैं, तो आप किसी अन्य एजेंट का उपयोग नहीं करना चाहते हैं ssh-agent

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

आप क्या कर सकते हैं:

gnome-keyring-daemon -r > ~/.gkr

और . ~/.gkrसभी गोले में आप नए सूक्ति-कीरिंग का उपयोग करना चाहते हैं

हालांकि इससे सावधान रहें कि सूक्ति-कीरिंग-डेमन कनेक्ट करने जा रहा है।


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

2

पहली बात मैं कोशिश करूंगा apt-get install ssh-askpass-gnomeअन्यथा यदि आपके पास वह पैकेज (या कुछ वैकल्पिक आस्कपास कार्यक्रम) स्थापित नहीं है, तो जब आप अपनी कुंजी को अनलॉक करने की आवश्यकता होती है तो सूक्ति आपके पासवर्ड के लिए संकेत नहीं दे सकता है।

आपको अपना DISPLAYचर ठीक से सेट करना होगा:

$ echo $DISPLAY
:0.0

इसके अलावा, आप अपना टर्मिनल कैसे शुरू कर रहे हैं? टर्मिनल सत्र शुरू करने के तरीके के साथ एक समस्या हो सकती है और यह विरासत में मिली या नहींgnome-session । यह तब हो सकता है जब आप अपने प्रमुख बाइंडिंग सेट करने के लिए कुछ गन-गनोम प्रोग्राम का उपयोग करते हैं।

मान लें कि आप का उपयोग gnome-terminalकर आप का उपयोग कर जाँच कर सकते हैं pstree। यहाँ आप सही विरासत देख रहे हैं:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

जबकि इस सत्र में यह से विरासत में नहीं मिला है gnome-session:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

इसके अलावा, यह देखें कि इसके ssh-agentद्वारा शुरू किया जा रहा है gnome-session:

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)

यह थोड़ा जटिल है कि मैं किस टर्मिनल का उपयोग कर रहा हूं (मेरी अपनी गलती है!)। मेरा टर्मिनल लॉन्च कमांड है mate-terminal --maximize -e tmux(जो मुझे लगता है कि सूक्ति-टर्मिनल है)। इसके अलावा, zshफिर भीतर लोड किया जाता है tmuxssh-askpass-gnomeस्थापित किया गया था। $DISPLAYपरिणाम की उम्मीद है। विरासत के लिए, बिना किसी तनाव के tmuxबैठे mate-terminalहैं gnome-session। एक अलग शाखा पर, यह tmux───zsh───xargs───pstree। अपने पिछले सवाल का जवाब करने के लिए, उत्पादन होता है: init───mdm───mdm───x-session-manag───ssh-agent। तुम क्या सोचते हो? धन्यवाद।
इयोनोक डेस

ठीक है, मान लें कि आप सूक्ति का उपयोग करते हैं (और मुझे लगता है कि टकसाल डिफ़ॉल्ट रूप से करता है, इसलिए जब तक आपने इसे डिफ़ॉल्ट से बदल नहीं दिया है?) तो मुझे लगता है कि आपकी mate-terminalविरासत से gnome-sessionसमस्या नहीं है। दो प्रश्न: 1) का आउटपुट क्या है pgrep -fl gnome-session; 2) आप वास्तव में अपने टर्मिनल को लागू करने के लिए क्या कार्रवाई करते हैं? एक मेनू से? एक गर्म कुंजी बंधन से? या ????
22

हां, मैं गनोम पर हूं। 1) आउटपुट खाली है। 2) बहुत दिलचस्प। मैं आमतौर पर करता हूं Ctrl+Alt+t। यह एक शॉर्टकट है Keyboard Shortcutsजिसे मैंने पहले उल्लेखित कमांड का उपयोग करके लिनक्स टकसाल एप्लिकेशन का उपयोग करके सेट किया है। हालांकि , Terminalमुख्य "स्टार्ट" मेनू के माध्यम से लॉन्च करते समय , एसएसएच ने अलग तरह से अभिनय किया । सूक्ति GUI ने मुझे अपने कीरिंग के लिए पासवर्ड के लिए प्रेरित किया। बाद के सत्रों के लिए इस पासफ़्रेज़ को बचाने का विकल्प निकाला गया, मैं इसका चयन नहीं कर सका। (मेनू लॉन्चर कमांड भी है mate-terminal --maximize -e tmux।) क्या यह हमें करीब लाता है? धन्यवाद, एसुलिच।
eoinoc

यदि आप Ctrl+Alt+tकीबोर्ड शॉर्टकट में सेट किए गए अजीब व्यवहार को देख रहे हैं तो मुझे लगता है कि आप शायद mdm / MATE में बग का अनुभव कर रहे हैं। मिंट का कौन सा संस्करण चल रहा है?
अकुलिच

मैं लिनक्स मिंट 13 पर पीछे एक संस्करण हूं। लेकिन मेनू-एक्सेस टर्मिनल के लिए, यह अभी भी मुझे "हर बार जब मैं लॉग इन करता हूं तो इस पासफ़्रेज़ को सहेजने" का चयन क्यों नहीं करने दूंगा?
eoinoc

1

मुझे लगता है कि पासवर्ड-संरक्षित SSH कुंजी को स्थायी रूप से संग्रहीत करने पर समस्या है।

कृपया निम्नलिखित संसाधनों पर एक नज़र डालें:


मैं जाते ही टिप्पणी करूँगा। पहले लिंक के साथ, मैंने `IdentityFile ~ / .shsh / id_rsa` जोड़ा, ~/.ssh/configलेकिन इसे ठीक नहीं किया।
eoinoc

तीसरा लिंक बेसिक सेटअप दिखाता है जो मैंने पहले से ही किया है उससे आगे नहीं जाता है। हालांकि धन्यवाद।
eoinoc

-1

इसे अपने .bash_profile में जोड़ें

if [ -n "$SSH_AUTH_SOCK" \
    -a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
    -a ! -L "$SSH_AUTH_SOCK" ]
then
    OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
    eval `ssh-agent`
    mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
    ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
    SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi

धन्यवाद मार्क। इसके साथ, $SSH_AUTH_SOCKका मान है /tmp/ssh-QCndYkdq2025/agent.2025। क्या मैं कुछ भूल रहा हूँ? $git pullअभी भी SSH पासफ्रेज़ शीघ्र लाता है।
इकोनोक

सर्वर पर अपनी .ssh / अधिकृत_की फ़ाइल पर अपनी अनुमतियाँ जांचें। यह 0600 होना चाहिए
मार्क कोहेन

सर्वर पर? GitHub बाहरी सर्वर है, और मेरी SSH कुंजी वहां दर्ज है। क्या यह स्थानीय मुद्दा नहीं है?
eoinoc

क्षमा करें, एहसास नहीं हुआ कि आप जीथब का उपयोग कर रहे थे। हाँ, आपका उस होस्ट पर कोई नियंत्रण नहीं है। आप अपने ssh- एजेंट में कई कुंजियाँ जोड़ सकते हैं और सुनिश्चित करें कि आप ठीक से काम कर सकें, यह सुनिश्चित करने के लिए लोकलहोस्ट को sshing प्रयोग करें। इसके अलावा, आप ssh -vvv उपयोगकर्ता @ होस्ट की कोशिश कर सकते हैं और देख सकते हैं कि क्या टूट रहा है।
मार्क कोहेन

अधिकांश डेस्कटॉप लिनक्स सिस्टम (मिंट शामिल) ssh-agentबॉक्स के ठीक बाहर लॉगिन पर ठीक से हैंडल करते हैं और यह आमतौर पर रोल-आपकी अपनी चीजें हैं जो इसे तोड़ते हैं। यदि किसी कारण से आपका सिस्टम हैंडल नहीं करता है ssh-agent, तो इसे हाथ से न करें। इसके बजाय किचेन का उपयोग करें जो इसे और संबंधित समस्याओं को संभालने के लिए अच्छी तरह से डिज़ाइन किया गया है। यह बीएसडी (मैक) और अन्य गैर-लिनक्स प्रणालियों के लिए भी काम करता है।
एसुलिच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.