SSH MOTD प्रति उपयोगकर्ता


17

मैं SSH उपयोगकर्ताओं के लिए प्रत्येक उपयोगकर्ता के लिए एक विशिष्ट स्वागत संदेश के साथ बैनर (स्वागत संदेश) प्रदर्शित करना चाहता हूं।

जवाबों:


38

आपने निर्दिष्ट नहीं किया कि आप SSH सर्वर का उपयोग कर रहे हैं। मैं ओपनएसएसएच मान रहा हूं।

ध्यान दें कि SSH बैनर और MOTD दो अलग-अलग चीजें हैं।

जबकि SSH टर्मिनल में लगभग अप्रभेद्य, उनके पास एक अलग व्यवहार होता है, उदाहरण के लिए, एक SFTP क्लाइंट में।


MOTD सिर्फ एक इंटरेक्टिव टर्मिनल पर छपा हुआ पाठ है। इसलिए, यह (और नहीं कर सकता) SFTP क्लाइंट को भेजा जा सकता है, उदाहरण के लिए (बाद में इसके बारे में)।

/etc/motdOpenSSH में MOTD हार्ड-कोडित है । आप इसे केवल PrintMotdनिर्देशन का उपयोग करके विश्व स्तर पर / बंद कर सकते हैं ।

कुछ लिनक्स प्रणालियों पर, हालांकि, PrintMotdहमेशा बंद रहता है और MOTD PAM स्टैक के बजाय ( pam_motdमॉड्यूल का उपयोग करके ) मुद्रित किया जाता है । इस मामले में आप इसे मॉड्यूल पैरामीटर के रूप में बंद कर सकते हैं /etc/pam.d/sshdया कस्टम motd=पथ निर्दिष्ट कर सकते हैं ।


SSH बैनर एक विशेष SSH 2.0 फीचर है, जो एक विशिष्ट SSH पैकेट (SSH2_MSG_USERAUTH_BANNER) में भेजा जाता है।

जैसे, गैर-टर्मिनल क्लाइंट, जैसे SFTP क्लाइंट, इसे प्रोसेस कर सकते हैं और उपयोगकर्ता को प्रदर्शित कर सकते हैं। उदाहरण के लिए देखें कि WinSCP SFTP / SCP क्लाइंट में बैनर कैसे प्रदर्शित होता है

SSH बैनर निर्देश और sshd_configउपयोग में प्रति उपयोगकर्ता (या समूह या अन्य मापदंड) विन्यास योग्य है :BannerMatch

Match User username1
    Banner /etc/banner_user1

Match User username2
    Banner /etc/banner_user2

विशिष्ट उपयोगकर्ताओं या ips के लिए ssh बैनर अक्षम करना भी देखें ।


बेशक, आप संदेश / बैनर के लिए एक कस्टम कार्यान्वयन का उपयोग भी कर सकते हैं। बस एक वैश्विक प्रोफ़ाइल स्क्रिप्ट से अपने कस्टम तर्क का उपयोग करके चयनित संदेश प्रिंट करें।

MOTD की तरह, यह गैर-संवादात्मक सत्रों (SFTP और एक जैसे) के लिए काम नहीं करेगा।

इससे भी महत्वपूर्ण बात, न केवल यह काम नहीं करेगा, आपको यह सुनिश्चित करने की ज़रूरत है कि आप संदेश को केवल एक इंटरैक्टिव टर्मिनल के लिए प्रिंट करें। OpenSSH स्वचालित रूप से क्या करता है /etc/motd। या तो एक वैश्विक प्रोफ़ाइल स्क्रिप्ट का उपयोग करें जो केवल एक इंटरैक्टिव टर्मिनल के लिए निष्पादित करता है, या TERMपर्यावरण चर के मूल्य के आधार पर संदेश को सशर्त रूप से प्रिंट करता है ।

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

उदाहरण के लिए देखें WinSCP SFTP / SCP क्लाइंट के प्रलेखन में ऐसे मुद्दे का वर्णन

(मैं WinSCP का लेखक हूं)


हाय सभी उत्तर के लिए धन्यवाद, मुझे मिल गया समाधान कृपया मुझे सही अगर मैं गलत हूँ। मैं इस पंक्तियों को / etc / प्रोफाइल फ़ाइल में जोड़ता हूं। PGROUP = groups|awk '{print $1}'cat /etc/motd.$azingPGROUP} इस पंक्ति को जोड़ने से पहले मैं प्रत्येक उपयोगकर्ता के लिए / etc निर्देशिका के अंतर्गत बैनर फ़ाइल बनाता हूँ। और motd.root और motd.alex जैसी फाइल और मेरे लिए यह काम।
user260277

वह भी करना चाहिए। मेरे उत्तर के अनुसार, यह केवल एक इंटरैक्टिव टर्मिनल में काम करता है। यह SFTP और इसी तरह के लिए काम नहीं करेगा।
मार्टिन प्रिक्रील

इंटरैक्टिव टर्मिनल का मतलब है?
user260277

यह एक ऐसा टर्मिनल है जिसके साथ एक मानव बातचीत करता है (एसएफटीपी सत्र के विपरीत, एससीपी सत्र या गैर-संवादात्मक टर्मिनल कुछ बैच कार्य के दूरस्थ निष्पादन के लिए उपयोग किया जाता है)
मार्टिन प्रिक्रील

मैंने बैनर के कस्टम कार्यान्वयन के बारे में कुछ पेचीदा विवरण शामिल किए हैं।
मार्टिन प्रिक्रील

9

आप "$HOME/.ssh/rc"आर्काइव के लिए फ़ाइल का उपयोग कर सकते हैं जो आप करना चाहते हैं

echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World

तो, आपके पास प्रत्येक उपयोगकर्ता के लिए एक ssh rc हो सकता है।


नमस्ते, मैं यह कोशिश करता हूं, लेकिन यह त्रुटि संदेश देता है। ssh / rc: 1: .ssh / rc: welcom: नहीं मिला।
user260277

मेरी गलती थी, मैंने एक टाइपो किया, आपको सामान्य बैश स्क्रिप्ट की तरह गूंज की आवश्यकता है
c4f4t0r

"वल्द" भी एक टाइपो है :)
सिमोन

मुझे "स्ट्टी: स्टैण्डर्ड इनपुट: डिवाइस के लिए अनुपयुक्त आईओक्टेल" मिलता है।
अगली सूचना तक रोक दिया गया।

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