मैं SSH उपयोगकर्ताओं के लिए प्रत्येक उपयोगकर्ता के लिए एक विशिष्ट स्वागत संदेश के साथ बैनर (स्वागत संदेश) प्रदर्शित करना चाहता हूं।
मैं SSH उपयोगकर्ताओं के लिए प्रत्येक उपयोगकर्ता के लिए एक विशिष्ट स्वागत संदेश के साथ बैनर (स्वागत संदेश) प्रदर्शित करना चाहता हूं।
जवाबों:
आपने निर्दिष्ट नहीं किया कि आप SSH सर्वर का उपयोग कर रहे हैं। मैं ओपनएसएसएच मान रहा हूं।
ध्यान दें कि SSH बैनर और MOTD दो अलग-अलग चीजें हैं।
जबकि SSH टर्मिनल में लगभग अप्रभेद्य, उनके पास एक अलग व्यवहार होता है, उदाहरण के लिए, एक SFTP क्लाइंट में।
MOTD सिर्फ एक इंटरेक्टिव टर्मिनल पर छपा हुआ पाठ है। इसलिए, यह (और नहीं कर सकता) SFTP क्लाइंट को भेजा जा सकता है, उदाहरण के लिए (बाद में इसके बारे में)।
/etc/motd
OpenSSH में 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
उपयोग में प्रति उपयोगकर्ता (या समूह या अन्य मापदंड) विन्यास योग्य है :Banner
Match
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 का लेखक हूं)
आप "$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 हो सकता है।
groups|awk '{print $1}'
cat /etc/motd.$azingPGROUP} इस पंक्ति को जोड़ने से पहले मैं प्रत्येक उपयोगकर्ता के लिए / etc निर्देशिका के अंतर्गत बैनर फ़ाइल बनाता हूँ। और motd.root और motd.alex जैसी फाइल और मेरे लिए यह काम।