मैं SSH "अंतिम लॉगिन" संदेश को कैसे संपादित करूं?


16

मैं Last login:दिन के संदेश के साथ मुद्रित होने वाली जानकारी को संपादित करना चाहता हूं , फिर भी मुझे वह स्क्रिप्ट नहीं मिल रही है जो उत्पन्न करता है और ग्रहण करता है।

इसे आसानी से संपादित शेल स्क्रिप्ट में, या बाइनरी में बंद कहाँ परिभाषित किया गया है?


ध्यान दें, यह ServerFault से अलग है : ssh शुरू होने पर मैं स्वागत संदेश कैसे संपादित कर सकता हूं? । "अंतिम लॉगिन" जानकारी को अंदर से प्रिंट नहीं किया जाता है /etc/update-motd.d/, बल्कि इसे PrintLastLogध्वज को सेट करके परिभाषित किया जाता है , और इसलिए इसे दिन के संदेश के अन्य भागों की तरह संपादित नहीं किया जा सकता है।


यह जानकारी utmpऔर wtmpफ़ाइलों (वितरण के आधार पर, चेक इन /var/run/utmpया डायरेक्टरी /var/log/utmpमें दिखती है /var) में सहेजी जाती है । इन फ़ाइलों को पाठ के रूप में सहेजा नहीं गया है, लेकिन बाइनरी के रूप में, इसलिए आपको उन्हें संपादित करने के लिए विशेष उपकरणों की आवश्यकता होगी। Utmp फ़ाइल प्रत्येक उपयोगकर्ता की वर्तमान लॉगिन स्थिति का ट्रैक रखती है। Wtmp फ़ाइल सभी लॉगिन और लॉगआउट इतिहास को रिकॉर्ड करती है। उन्हें संपादित करने के लिए आपको विशेष उपकरणों की आवश्यकता होगी, लेकिन मुझे वास्तव में कुछ भी नहीं मिला।
14:00

जवाबों:


14

ऐसा लगता है कि मुद्रित लाइन के प्रारूप में संकलित किया गया है sshd:

[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s

मुझे लगता है कि या तो बदलने के लिए कोई भी विन्यास विकल्प नहीं देखा जा सकता है, इसलिए आपको स्रोत को संपादित करने और फिर से खोलने की आवश्यकता होगी।

संपादित करें : सीमित मामले में, आप http://www.openssh.org पर स्रोत पा सकते हैं । लेकिन आप हमें यह नहीं बताते हैं कि आप OpenSSH का उपयोग कर रहे हैं, या अपने मंच के बारे में कुछ भी, इसलिए यह अधिक विशिष्ट होना कठिन है। यदि यह एक लिनक्स सिस्टम है, तो आप अपने डिस्ट्रो को सामान्य तरीके से उपयुक्त स्रोत प्राप्त करने के लिए बहुत बेहतर करेंगे, और अपने डिस्ट्रो-विशिष्ट तंत्रों के माध्यम से फिर से जोड़ सकते हैं।

लेकिन वास्तव में, यदि आप ऐसा नहीं करना चाहिए सब पर आप एक रखरखाव कर रहे हैं: जब तक आप ऐसा करने के लिए एक बहुत ही-सम्मोहक व्यापार कारण है बुरा सपना खुद के लिए, एक सुरक्षा के प्रति संवेदनशील पैकेज के एक हाथ से संकलित संस्करण पर जाकर।


स्रोत कोड कहां sshdपाया जा सकता है?
IQAndreas

1
दरअसल, मैं स्रोत के साथ कुछ और योजना बना रहा था। मैं यह देखना चाहता था कि वे किस तरह से डेटा को पार्स करते हैं wtmp, PrintLastLogध्वज को सेट करते हैं no, और अंदर में अपनी स्क्रिप्ट के साथ "अंतिम लॉगिन" नोटिस को फिर से बनाते हैं update-motd.d। बहुत अधिक रखरखाव के अनुकूल। :)
IQAndreas

1
मैं अक्सर देख रहा हूँ कि motdआउटपुट पूरी तरह से अद्यतित नहीं है। इसलिए मैं सोच रहा हूं कि update-motdहर लॉगिन पर नहीं चलाया जा सकता है।
कैस्परड

@kasperd यह क्रोन जॉब के रूप में हर 10 मिनट में अपडेट होता है। यह उस स्थिति में मदद करने के लिए है जब यह कुछ "धीमा" करने की कोशिश करता है जैसे कि इंटरनेट से एक स्ट्रिंग को पुनः प्राप्त करना, इसलिए यह सर्वर को हर बार किसी को लॉग इन करने में धीमा नहीं करता है।
IQAndreas

3
"अंतिम लॉगिन" संदेश उपयोगकर्ता विशिष्ट है, जबकि मोट सिस्टम-वाइड है। मुझे यकीन नहीं है कि आप संदेश को कैसे फिर से बनाना चाहते हैं। इसके अलावा, ऐसे लोग हैं जो वास्तव में इस संदेश को पढ़ते हैं, और चाहते हैं कि यह यथासंभव सटीक हो।
सिमोन रिक्टर

5

अंतिम लॉगिन जानकारी संग्रहीत है /var/log/wtmpया /var/log/utmpवे बाइनरी फाइलें हैं। Sshd के लिए स्रोत कोड को देखे बिना मैं पूरी तरह से निश्चित नहीं हो सकता, लेकिन मैं यह उम्मीद करूंगा कि यह उन फाइलों से सूचना को पुनः प्राप्त कर रहा है जो उचित शुल्क कॉल के साथ हैं

ऐसा लगता है कि यह संभव नहीं है कि आप उपयोगकर्ताओं की सुरक्षा के सभी भाग के बाद इस जानकारी को आसानी से बदल सकें।


यदि आप वास्तव में गैरी विवरण चाहते हैं तो आपको उस फ़ंक्शन के स्रोत कोड को देखने की आवश्यकता है login_get_lastlogजो इसमें पाया जा सकता हैloginrec.c


स्रोत कोड सुझाव के कारण @lain +1 - हालांकि मुझे नहीं लगता कि यह एक Gory समाधान था, उसकी सभी जरूरतों के लिए एक स्थानीय git दर्पण है। स्रोत का उपयोग करने वाले इम्हो शैतान से भी नहीं है।
पेटेर - मोनिका

2

एक और उपाय यह होगा कि motd फाइल की शुरुआत में स्क्रीन को इस तरह साफ किया जाए:

^[[H^[[2J
whatever was originally in the motd file here

नोट: ^[भागने के प्रतीक के साथ बदलें (जो आप निम्नलिखित कुंजियों को दबाकर नैनो संपादक में बना सकते हैं: esc+ v+ esc)


-2

शायद कुछ काम के आसपास के मामले में आप बस पिछले लॉगिन आईपी को बदलना चाहते हैं?

उदाहरण के लिए, आप रिमोट कंट्रोल मशीन से फिर से ssh करने के लिए दिखाए गए IP पते को "localhost" में बदल सकते हैं!

Ssh >> ssh उपयोगकर्ता नाम @ localhost के माध्यम से रिमोट लॉगिन

अब रिकॉर्ड किया गया आखिरी आईपी लोकलहोस्ट होगा

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