जवाबों:
who
या w
; who -a
अतिरिक्त जानकारी के लिए।
ये कमांड बस एक टर्मिनल डिवाइस पर सभी लॉगिन सत्र दिखाते हैं। एक एसएसएच सत्र एक छद्म-टर्मिनल दास ( pts
) पर होगा जैसा कि TTY
कॉलम में दिखाया गया है , लेकिन सभी पीटीएस कनेक्शन एसएचओ सत्र नहीं हैं। उदाहरण के लिए, प्रोग्राम जो एक छद्म टर्मिनल डिवाइस बनाते हैं जैसे कि xterm
या जैसा screen
कि दिखाएगा pts
। स्तंभ में पाए जाने वाले विभिन्न मूल्यों के बेहतर विवरण के लिए पीटी और ट्टी के बीच अंतर देखें TTY
। इसके अलावा, यह दृष्टिकोण किसी को भी नहीं दिखाएगा जो एसएफटीपी सत्र में लॉग इन हुआ है, क्योंकि एसएफटीपी सत्रों में प्रवेश सत्र नहीं हैं।
मुझे सभी SSH सत्रों को स्पष्ट रूप से दिखाने का कोई तरीका नहीं पता है। आप से प्रवेश जानकारी को पढ़ कर इस जानकारी का अनुमान कर सकते हैं utmp
/ wtmp
एक उपकरण के माध्यम से की तरह last
, w
या who
पोर्ट 22 (या पर खुला TCP कनेक्शन जहाँ भी आपकी SSH को खोजने के लिए की तरह मैं सिर्फ का वर्णन किया है, या उनके जवाब में वर्णित @sebelk तरह नेटवर्किंग टूल का प्रयोग करके डेमन (एस) है / सुन रहे हैं)।
तीसरा तरीका जो आप ले सकते हैं वह है एसएसएच डेमॉन से लॉग आउटपुट को पार्स करना। आपके OS वितरण, SSH वितरण, कॉन्फ़िगरेशन, और इसी तरह, आपके लॉग आउटपुट विभिन्न स्थानों पर हो सकते हैं। आरएचईएल 6 बॉक्स पर, मुझे लॉग इन मिला /var/log/sshd.log
। आरएचईएल 7 बॉक्स पर, और आर्क लिनक्स बॉक्स पर भी, मुझे journalctl -u sshd
लॉग देखने के लिए उपयोग करने की आवश्यकता है । कुछ सिस्टम SSH लॉग को syslog में आउटपुट कर सकते हैं। आपके लॉग इन स्थानों या अन्य जगहों पर हो सकते हैं। यहाँ एक नमूना है जो आप देख सकते हैं:
[myhost ~]% cat /var/log/sshd.log | grep hendrenj | grep session
May 1 15:57:11 myhost sshd[34427]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 1 16:16:13 myhost sshd[34427]: pam_unix(sshd:session): session closed for user hendrenj
May 5 14:27:09 myhost sshd[43553]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 5 18:23:41 myhost sshd[43553]: pam_unix(sshd:session): session closed for user hendrenj
लॉग तब दिखाई देते हैं जब सत्र खुले और बंद होते हैं, सत्र किसका है, जहां उपयोगकर्ता से कनेक्ट हो रहा है, और बहुत कुछ। हालाँकि, यदि आप इसे सरल, मानव-पढ़ने योग्य लॉग इन इवेंट्स से वर्तमान में सक्रिय सत्रों की सूची में लाना चाहते हैं, तो आपको बहुत कुछ करना होगा, और यह तब भी सटीक सूची नहीं होगी जब आपने पार्स किया है, क्योंकि लॉग में वास्तव में यह निर्धारित करने के लिए पर्याप्त जानकारी नहीं है कि कौन से सत्र अभी भी सक्रिय हैं - आप अनिवार्य रूप से सिर्फ अनुमान लगा रहे हैं। इन लॉग्स का उपयोग करने से आपको एकमात्र लाभ यह है कि यह जानकारी अन्य तरीकों की तरह सेकंडहैंड स्रोत के माध्यम से सीधे SSHD से आती है।
मैं सिर्फ उपयोग करने की सलाह देता हूं w
। ज्यादातर समय, यह आपको वह जानकारी मिलेगी जो आप चाहते हैं।
आप निम्न आदेश के साथ हर सत्र ssh देख सकते हैं:
[root@router ~]# netstat -tnpa | grep 'ESTABLISHED.*sshd'
tcp 0 0 192.168.1.136:22 192.168.1.147:45852 ESTABLISHED 1341/sshd
tcp 0 0 192.168.1.136:22 192.168.1.147:45858 ESTABLISHED 1360/sshd
ओ शायद यह उपयोगी हो सकता है:
[root@router ~]# ps auxwww | grep sshd:
root 1341 0.0 0.4 97940 3952 ? Ss 20:31 0:00 sshd: root@pts/0
root 1360 0.0 0.5 97940 4056 ? Ss 20:32 0:00 sshd: root@pts/1
root 1397 0.0 0.1 105300 888 pts/0 S+ 20:37 0:00 grep sshd:
pgrep -ai sshd
pgrep: invalid option -- 'i'
उबंटू 14.04 पर।
-i
केवल mac / bsd फ्लेवर पर उपलब्ध है। ubuntu पर आप उपयोग कर सकते हैं pgrep -af ssd
। देखें serverfault.com/a/883270/116777 जानकारी के लिए
आप भी उपयोग कर सकते हैं
ps ax | grep sshd
सरल संदर्भ के लिए जोड़ा गया।
यदि आप छद्म खोल में हैं (उदाहरण: / dev / pts / 0) सबसे सरल तरीकों में से एक होगा:
[user1@host ~]$ echo $SSH_CONNECTION
इसे वापस आना चाहिए: आपका आईपी और पोर्ट और आईपी आपके से और पोर्ट से जुड़ा हुआ है
192.168.0.13 50473 192.168.0.22 22
आप का उपयोग करके tty
या who
( w
) से कुछ जानकारी भी प्राप्त कर सकते हैं : (संपादित करें: मुझे लगता है कि यह अब एक और पोस्ट में ऊपर सूची है)
[user1@host ~]$ who
user1 tty1 2018-01-03 18:43
user2 pts/0 2018-01-03 18:44 (192.168.0.13)
SECONDS
वैश्विक संदर्भ देने का सुझाव दूं । आप इसका उपयोग कर सकते हैं echo $SECONDS
, जिसके बाद यह समय की मात्रा को प्रदर्शित करता है, कथित कनेक्शन के बाद से
@ Sebelk के उत्तर पर विस्तार:
उपयोग करने वाला समाधान netstat
एक अच्छा है, लेकिन रूट विशेषाधिकारों की आवश्यकता है। इसके अलावा, net-tools
पैकेज (जो प्रदान करता है netstat
) को कुछ नए लिनक्स डिस्ट्रो ( https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-ir-replacements/ ) में अपग्रेड किया गया था ।
एक वैकल्पिक समाधान के लिए प्रतिस्थापन का उपयोग करने के तो है netstat
, ss
। उदाहरण के लिए (ध्यान दें कि आपको अब रूट की आवश्यकता नहीं है):
user@router:~# ss | grep ssh
tcp ESTAB 0 0 192.168.1.136:ssh 192.168.1.147:37620
tcp ESTAB 0 0 192.168.1.136:ssh 192.168.1.147:37628
आप उपयोग कर सकते हैं
last | head
मैंने इसे अपनी .login स्क्रिप्ट में सालों तक यह देखने के लिए इस्तेमाल किया कि किसने हाल ही में सिस्टम में लॉग इन किया था। यह देखने के लिए एक गरीब-आदमी-सुरक्षा उपकरण था कि क्या कोई आपके लॉगिन का उपयोग करके सिस्टम पर था।
last
सूचीबद्ध नहीं किया जा सकता है।
last
समर्थन करता है -p
? यह क्या करता है?
"last from util-linux 2.31.1"
पास यह सुनिश्चित करने के लिए है।
who -a