सभी टर्मिनलों में काम करने के लिए मुझे ssh-Agent कैसे मिलेंगे?


27

मैंने ssh-copy-id का उपयोग करके कुछ सर्वरों में स्वचालित (पासवर्ड कम) ssh लॉगिन सेट किया है। ssh-agentकेवल उस टर्मिनल से काम करता है जहां इसे चलाया गया था। मुझे अपने ssh-addसभी टर्मिनलों में कैसे काम करना है?

स्वाभाविक रूप से, मैं पासफ़्रेज़ के बिना SSH कुंजी पसंद नहीं करूंगा।

जवाबों:


26

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

इन फ़ाइलों को प्रत्येक नए इंटरेक्टिव शेल द्वारा निष्पादित किए जाने के बाद ssh-agentसे .bashrcया से शुरू न करें .zshrc। शुरू करने का स्थान ssh-agentसत्र स्टार्टअप फ़ाइल जैसे .profileया में है .xsession

यदि आप सभी प्रक्रियाओं पर समान एसएसएच एजेंट का उपयोग करना चाहते हैं, जहां आप लॉग-इन नहीं करते हैं, तो आप बेतरतीब ढंग से नामित सॉकेट का उपयोग करने के बजाय इसे हमेशा एक ही सॉकेट नाम का उपयोग कर सकते हैं। उदाहरण के लिए, आप इसे अपने में डाल सकते हैं ~/.profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

FYI करें, इसका कारण यह $? -ge 2है क्योंकि एग्ज़िट कोड 1 तब है जब ssh-agent के पास कोई कुंजी नहीं है, लेकिन ssh-Agent पहले से ही चल रहा है।
वारबीक्यू

7

आप शायद किचेन जैसे एक कार्यक्रम चाहते हैं , जिसे इस सटीक उद्देश्य के लिए डिज़ाइन किया गया था। आदमी पृष्ठ से:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

वास्तव में यह एक तरह!
कॉलिन डी

महान! धन्यवाद। अच्छी तरह से काम।
कोई

यह बहुत अच्छा काम करता है, गितुब से संपीड़ित फ़ाइल को डाउनलोड करने के बाद, सुनिश्चित करें कि आप अपने ~ / .bash_profile निर्यात पथ = $ PATH: लाइन
केविन झाओ

4

इसे अपने डेस्कटॉप वातावरण या विंडो मैनेजर पर लागू करें। जब मैंने इसे कस्टम के साथ अतीत में मैन्युअल रूप से किया है, तो मैंने इसे ~/.Xclientsअंतिम पंक्ति के रूप में उपयोग किया है:

ssh-agent mywindowmanger

कुछ डीई हो सकते हैं जिनके पास इसके लिए अपने स्वयं के सेटअप विकल्प हैं, हालांकि यह मुझे प्रतीत होता है कि (जैसे) केडीई नहीं करता है। वर्तमान में, ऐसा लगता है कि खदान से कोड के माध्यम से चलाया गया था /etc/X11/xinit/xinitrc-common(संभवतः फेडोरा द्वारा किया गया कुछ), क्योंकि यह सभी उपयोगकर्ताओं के लिए डीए / WM की परवाह किए बिना सक्रिय है और मूल प्रक्रिया कमांड है $HOME/.Xclients, लेकिन वह फ़ाइल संदर्भ नहीं है ssh-agent(जबकि /etc/X11/xinit/xinitrc-commonकरता है)।

यदि आपके पास नहीं है ~/.Xclients, तो आप केवल एक पंक्ति के साथ एक बना सकते हैं, लेकिन आपको अपने DE / WM को शुरू करने वाले कमांड को जानना होगा।

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