SSH फ़ाइल स्थानांतरण की सूचनाएं कैसे प्राप्त करें?


1

मैं सोच रहा था कि क्या कोई विधि या कार्यक्रम है जो SSH फ़ाइल स्थानांतरण की निगरानी कर सकता है और एक फ़ाइल (इनकमिंग) हस्तांतरित होने पर एक ईमेल भेज सकता है?

(अन्य विकल्प कम से कम एक सूचना प्राप्त करना होगा जब कोई व्यक्ति एसएसएच के माध्यम से लॉग इन करता है, हालांकि यह आदर्श होगा यदि ईमेल में जानकारी है कि किस फ़ाइल को स्थानांतरित किया गया है)

इसके अलावा, ssh फ़ाइल स्थानांतरण में लगे सक्रिय उपयोगकर्ताओं को देखने के लिए कोई कैसे जाँच कर सकता है?

मैं समझता हूं कि यह एक OSX प्रश्न है, लेकिन मुझे लगा कि यह सुपरयूजर साइट के लिए अधिक अनुकूल होगा। अगर im गलती से स्थानांतरित करने के लिए वोट करें :)


1
सुपर उपयोगकर्ता पर मैक ओएस एक्स से संबंधित प्रश्न हैं। हमेशा थे। ओवरलैप वाली किसी अन्य साइट का अस्तित्व इसे परिवर्तित नहीं करता है।
डैनियल बेक

1
SSH लॉगिन, प्रमाणीकरण और लॉगआउट को लॉग करता है system.log(इसे Console.app में देखें)। विशेष रूप से subsystem request for sftpसंदेश यह निर्धारित करने में सहायक हो सकता है कि यह किस प्रकार का एसएसएच कनेक्शन है। दुर्भाग्य से, यहां तक कि बढ़ती LogLevelमें /etc/sshd_configकरने के लिए DEBUG3(उच्चतम) अपलोड की गई फ़ाइलों के फ़ाइल नाम प्रदर्शित नहीं करता है, और जब सत्र खोला या बंद भी उपयोगी ... नहीं हो सकता है कर रहे हैं के बाद सख्ती से जा रहा
डैनियल बेक

पारितोषिक के लिए धन्यवाद! लॉगिन और logouts एक शुरुआत कर रहे हैं - धन्यवाद @Daniel
OrangeBox

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

शायद इस पर गौर करना चाहिए: serverfault.com/questions/73319/sftp-log-is-there-a-way

जवाबों:


2

यह जांचने के लिए कि अभी किन उपयोगकर्ताओं के पास सक्रिय SFTP सत्र है, आप इस sftp-serverप्रक्रिया को देख सकते हैं । ध्यान दें कि प्रक्रिया की उपस्थिति का मतलब यह नहीं है कि वे वर्तमान में फ़ाइलों को स्थानांतरित कर रहे हैं।

$ ps uax | grep '[s]ftp-server'
1000     15115  0.0  0.0  12532   728 ?        Ss   14:38   0:00 /usr/lib/openssh/sftp-server

(यदि आप आश्चर्य करते हैं, तो पैटर्न से वर्गाकार कोष्ठक का उपयोग आउटपुट से स्वयं grep कमांड को छिपाने के लिए "हैक" के रूप में किया जाता है।)

शेल स्क्रिप्ट (बैश)

#!/usr/bin/env bash

pids=$(pgrep -x sftp-server)
users=()

for pid in "${pids[@]}"; do
    users+=("$(ps --no-headers -o user 15115)")
done

echo "Users with active SFTP sessions: ${users[*]}"

यदि आप प्रति पंक्ति एक उपयोगकर्ता का उत्पादन करना चाहते हैं, तो अंतिम पंक्ति को इसके साथ बदलें:

echo "Users with active SFTP sessions:"
echo
for user in "${user[@]}"; do
    echo "$user"
done

वैकल्पिक रूप से, आप /procइसके आधार पर फाइल सिस्टम का उपयोग कर सकते हैं pgrep। यह इस उत्तर में विस्तृत नहीं है।


OS X का ps नहीं है --no-headers, लेकिन आप इसका उपयोग कर सकते हैं ps -p 15115 -o user=
लारी

0

यह ईमेल के माध्यम से एक कस्टम संदेश भेजने के लिए एक उदाहरण स्क्रिप्ट है।

echo "User $USER just logged in * $(date '+%d-%m-%Y %T') |
    sendmail -q -u "SSH Login" -f 'Originator <from@address.com>' \
             -t 'Your Name <your.email@domain.com>' -s smtp.server.com &

ईमेल भेजने के लिए आपको sendmail स्थापित पैकेज की आवश्यकता होगी । sendmailअधिक विवरण के लिए मैन पेज पढ़ें ।

आप .bash_loginवांछित उपयोगकर्ता में इस तरह से एक स्क्रिप्ट डाल सकते हैं ताकि आप एक ईमेल अधिसूचना प्राप्त करेंगे जब भी व्यक्ति टर्मिनल लॉगिन का उपयोग करता है और लॉगिन सफल होता है। (SSH टर्मिनल लॉगिन का उपयोग करता है।)

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