SSH कॉन्फ़िगरेशन: डिफ़ॉल्ट उपयोगकर्ता नाम को ओवरराइड करें


271

क्या यह sshजानना संभव है कि मेरा उपयोगकर्ता नाम क्या होना चाहिए?

डिफ़ॉल्ट रूप से यह वर्तमान उपयोगकर्ता नाम का उपयोग करता है, जो मेरे मामले में सही नहीं है।

मैं एक ऋणदाता लैपटॉप पर हूं, और मेरा उपयोगकर्ता नाम है loaner, लेकिन मैं बताना चाहता हूं sshकि मेरा उपयोगकर्ता नाम है buck

बोनस अंक: घर पर मेरा उपयोगकर्ता नाम bgolemon है। अगर मैं प्रति-उपयोगकर्ता नाम को कॉन्फ़िगर कर सकता हूं जो और भी बेहतर होगा।


3
स्टैक ओवरफ्लो प्रोग्रामिंग और विकास के सवालों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद सुपर यूजर या यूनिक्स और लिनक्स स्टैक एक्सचेंज पूछने के लिए बेहतर जगह होगी। यह भी देखें कि मैं देव ऑप्स के बारे में प्रश्न कहां से पोस्ट करूं?
jww

3
यह इतना अच्छा सवाल है!
निकोलस S.Xu

सुपरसियर की तुलना में यहां स्वीकृत उत्तर बेहतर है: इसमें वैश्विक (डिफ़ॉल्ट) उपयोगकर्ता निर्देश का उपयोग शामिल है और टिप्पणियाँ जोड़ी गईं प्राथमिक प्राथमिकताएं स्पष्ट करें
रोंडो

जवाबों:


449

configअंदर एक फ़ाइल बनाएँ ~/.ssh। फ़ाइल के अंदर आप जोड़ सकते हैं:

Host *
    User buck

या जोड़ें

Host example
    HostName example.net
    User buck

दूसरा उदाहरण एक उपयोगकर्ता नाम सेट करेगा और होस्टनाम विशिष्ट है, जबकि पहला उदाहरण केवल एक उपयोगकर्ता नाम सेट करता है। और जब आप दूसरे का उपयोग करते हैं तो आपको उपयोग करने की आवश्यकता नहीं होती है ssh example.net; ssh exampleकाफी होगा।


134
यह संभवतः इंगित करने के लायक है man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.इसके अनुसार : तो Host *अनुभाग को संभवतः अंत में जाना चाहिए।
quodlibetor

9
यह ध्यान देने योग्य है कि कॉन्फ़िगर फ़ाइल को शीर्ष-से-नीचे फैशन में संसाधित किया जाएगा, प्रत्येक फ़ील्ड (उपयोगकर्ता, होस्टनाम ...) को पॉप्युलेट करना और एकाधिक होस्ट निर्देशों का मिलान होने पर दोहराया फ़ील्ड को छोड़ देना । आप निर्धारित करते हैं Host *, User jdoeशीर्ष पर, और फिर परिभाषित Host example, HostName abc.example.com, User root, प्रयास कर ssh exampleही रूप में यदि आपके द्वारा दर्ज किया जाएगा ssh jdoe@abc.example.com। Ssh डिफॉल्ट्स (यानी। User root) को परिभाषित करने के लिए , Host *निर्देश को विन्यास फाइल के निचले भाग में होना चाहिए ।
mr.b

17
इसके अलावा, .msh / config पर chmod 600 मत भूलना
स्वेन

ध्यान दें कि यदि कई होस्टनाम हैं जो सर्वर द्वारा पहुंच योग्य है (या यदि आप एक से अधिक सर्वर के लिए एक ही डिफ़ॉल्ट उपयोगकर्ता नाम चाहते हैं), तो आपको पहली पंक्ति को बदलकर Host server1.local example.net *.example.orgबस लाइन से छुटकारा पाना चाहिए HostName
लेजे मेजेस्टे

44

यदि आप केवल कुछ ही बार ssh करना चाहते हैं , जैसे उधार या साझा कंप्यूटर पर, कोशिश करें:

ssh buck@hostname

या

ssh -l buck hostname

1
धन्यवाद, लेकिन मैं पहले से ही इससे परिचित हूं। यह हिरन @ होस्ट को निर्दिष्ट करने के लिए बेमानी लगता है जब वह हमेशा हिरन @ होस्ट करता है। मैं कॉन्फ़िगरेशन फ़ाइल में इस जानकारी का प्रतिनिधित्व करने के लिए एक विधि खोजने की कोशिश कर रहा हूं।
bukzor

1
क्या आपने उर्फ ​​sshhostname = 'ssh buck @ hostname' के रूप में कुछ सरल माना है?
gpojd

हाँ मेरे पास है। Learath2 का जवाब वही है जो मैं खोज रहा था। मैं इसे अपने डॉटफाइल्स रिपॉजिटरी में जांच सकता हूं और फिर कभी इसके बारे में चिंता नहीं कर सकता।
bukzor

मैंने उर्फ ​​रूट लिया क्योंकि मैं विभिन्न ग्राहकों के लिए मशीनों से जुड़ता हूं, जहां प्रत्येक ग्राहक वातावरण में मेरा उपयोगकर्ता नाम अलग है। मुझे लगता है कि एक और दृष्टिकोण प्रत्येक ग्राहक के लिए ssh और संबंधित सेटिंग्स सेट करने के लिए अलग-अलग स्थानीय शेल वातावरण होगा। या प्रति ग्राहक एक वी.एम.
निक स्पेसक

6

man ssh_config कहते हैं

उपयोगकर्ता

उपयोगकर्ता को लॉग इन करने के लिए निर्दिष्ट करता है। यह तब उपयोगी हो सकता है जब विभिन्न मशीनों पर एक अलग उपयोगकर्ता नाम का उपयोग किया जाता है। यह कमांड लाइन पर उपयोगकर्ता नाम देने के लिए याद रखने की परेशानी से बचाता है।


1
इस मामले में "पहचान" "पासवर्ड" के सामान्य उपयोग के बराबर है। इस डेटा जो आपको प्रमाणीकृत है, लेकिन मदद जो आप को प्रमाणित करने के प्रयास कर रहे हैं निर्दिष्ट नहीं है के रूप में
bukzor

उफ़। वहाँ भी एक उपयोगकर्ता सेटिंग है।
nes1983

0

आप एक शॉर्टकट का उपयोग कर सकते हैं। अपने घर निर्देशिका में .bashrc फ़ाइल बनाएँ। वहाँ, आप निम्नलिखित जोड़ सकते हैं:

alias sshb="ssh buck@host"

अपने टर्मिनल में उपलब्ध उपनाम बनाने के लिए, आप अपने टर्मिनल को बंद या खोल सकते हैं, या चला सकते हैं

source ~/.bashrc

तब आप केवल टाइप करके जुड़ सकते हैं:

sshb

1
यह एक विशिष्ट मेजबान के लिए बहुत अच्छा है, लेकिन जैसा कि मैं एक ट्रिलियन विभिन्न सर्वरों से जुड़ता रहता हूं, यह बेकार है। बल्कि .ssh/configउचित सेटिंग्स के साथ सेट अप करें। मैं *वाइल्डकेयर की तलाश में आया (और सीखा कि यह सबसे नीचे होना चाहिए)।
mazunki

0

एक रूबी रत्न sshहोता है जो आपकी कॉन्फ़िगरेशन फ़ाइल को बाधित करता है जिसे कहा जाता है sshez

आपको बस इतना करना है sshez <alias> username@example.com -p <port-number>, और फिर आप का उपयोग कर कनेक्ट कर सकते हैं ssh <alias>। यह भी उपयोगी है क्योंकि आप अपने उपनामों का उपयोग करके सूचीबद्ध कर sshez listसकते हैं और आसानी से उनका उपयोग करके निकाल सकते हैं sshez remove alias

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