Ssh लॉगिन हुक?


15

क्या हर बार उपयोगकर्ता द्वारा ssh का उपयोग करके कनेक्ट होने पर स्क्रिप्ट / कमांड चलाने का एक तरीका है? क्या इसे विश्व स्तर पर कॉन्फ़िगर किया जा सकता है (यानी किसी भी उपयोगकर्ता के लॉगिन पर स्क्रिप्ट चलाएं )?

मैं इस सवाल पर आइडेंटिका पर आया था, लेकिन अभी तक कोई जवाब नहीं आया है और मैं इसे जानना चाहूंगा।

जवाबों:


11

सभी उपयोगकर्ताओं के लिए, या किसी विशेष उपयोगकर्ता के लिए? एकल उपयोगकर्ता के लिए, इसे उनकी .bashrcफ़ाइल में सेट करें ; सभी उपयोगकर्ताओं के लिए, pam_exec देखें

यदि उपयोगकर्ता इसमें से आ रहे हैं sshd, तो आप निम्न पंक्ति को इसमें जोड़ना चाहेंगे /etc/pam.d/sshd; उनके स्रोत के आधार पर अन्य फाइलें:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

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

नोट: हमेशा की तरह जब आप लॉगिन कॉन्फ़िगरेशन बदलते हैं, तो पृष्ठभूमि में एक बैकअप शेल खोलें और नए टर्मिनल से लॉगिन का परीक्षण करें।


धन्यवाद, यह आशाजनक लग रहा है। क्या आप थोड़ा और विस्तृत कर सकते हैं? मैं इससे अपरिचित हूं।
फुनेहे

मुझे लगता है कि मुझे session include pam_exec.so seteuid /path/to/scriptफ़ाइल में जोड़ना चाहिए /etc/pam.d/system-remote-login। क्या वो सही है?
फुनेहे

या तो system-remote-loginया sshd, यह निर्भर करता है कि उपयोगकर्ता कैसे आ रहा है।
Glen Solsberry

बहुत बढ़िया! यह बहुत अच्छा होगा यदि आप जानकारी को शामिल करने के लिए उत्तर को संपादित करते हैं (आप जानते हैं, दूसरों के लिए जो इसे खोजते हैं)।
फन्नेहे

Googling करने वाले लोगों पर ध्यान दें, आप PAM को होने वाली किसी भी प्रमाणीकरण घटनाओं के बारे में सूचित करने के लिए इस लाइन auth optional pam_exec.so /path/to/my/hook.shको लगा सकते /etc/pam.d/common-authहैं। यह कार्यक्रम आपको पुश सूचनाएं भी भेज सकता है: github.com/benjojo/PushAlotAuth
निक स्वीटिंग

6

एक और तरीका है जो केवल ssh का उपयोग करने वाले उपयोगकर्ताओं को प्रभावित करता है स्थानीय लोगों को नहीं (जो आपातकालीन स्थितियों में बेहतर हो सकता है)

नीचे ssh मैन पेज से स्निपेट देखें।

इस मामले में उपयोगकर्ता आमतौर पर फाइलों को थोड़ा संशोधित कर सकते हैं (थोड़ा सा .bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

और यह वैश्विक है और सामान्य उपयोगकर्ता द्वारा परिवर्तनीय नहीं है

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

2
लेकिन / etc / sshrc को केवल तभी निष्पादित किया जाएगा जब उपयोगकर्ता के पास स्वयं ~ / .ssh / rc नहीं है, इसलिए यह उपयोगकर्ता बाईपास कर सकता है
isevcik

2
@isevcik, केवल तभी जब PermitUserRC को "हां" में सेट किया गया है /etc/ssh/sshd_config( man sshd_configविवरण के लिए देखें)
jeremysprofile
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.