लिनक्स सर्वर पर, मुझे सभी वर्तमान एसएसएच कनेक्शनों की सूची कैसे मिलेगी, या एक विशिष्ट एसएसएच कनेक्शन को डिस्कनेक्ट करें?
लिनक्स सर्वर पर, मुझे सभी वर्तमान एसएसएच कनेक्शनों की सूची कैसे मिलेगी, या एक विशिष्ट एसएसएच कनेक्शन को डिस्कनेक्ट करें?
जवाबों:
यदि आप इसे अंतःक्रियात्मक रूप से करने की योजना बना रहे हैं, तो सबसे सरल यह who
होगा कि आप किसी दूरस्थ उपयोगकर्ता से कोई उपयोगकर्ता प्राप्त करें और देखें।
[you@host]$ who
user1 :0 Feb 8 09:45
user1 pts/1 Feb 14 17:56 (:0.0)
malcolm pts/3 Feb 15 17:50 (cockpit.serenity.com)
reynold pts/2 Feb 15 17:48 (host123.firefly.co.uk)
यह निश्चित रूप से मूर्खतापूर्ण नहीं है, लेकिन मांग पर टाइप करने और मानव आंख के साथ आसानी से प्रक्रिया करने के लिए बेहद सरल है।
जैसा कि @gravyface ने बताया, यदि आप एक -u
विकल्प शामिल who
करते हैं तो संबंधित पीआईडी को भी प्रिंट कर लेंगे जिसे आप kill
एक कनेक्शन समाप्त करने के लिए पास कर सकते हैं ।
-u
आपको पीआईडी देगा।
who -u
। पिड को मारने से मेरे रिमोट मशीन पर कनेक्शन समाप्त नहीं हुआ। हालाँकि, इसके बाद मैंने lsof -i | grep ":ssh"
@kce द्वारा उत्तर में एक सुझाव दिया, मुझे एक अलग ही सलाह मिली; उस प्रक्रिया को मारने से कनेक्शन समाप्त हो गया। हो सकता है कि कई प्रक्रियाएं हैं जो एक ssh कनेक्शन के कारण शुरू की गई हैं और जो प्रदर्शित नहीं करता है उसे मारने से कनेक्शन समाप्त नहीं होता है; यह मेरा स्पष्टीकरण है।
कैसे के बारे में lsof का उपयोग?
# lsof -i |grep ":ssh"
sshd 1943 root 3u IPv6 5698 TCP *:ssh (LISTEN)
sshd 1943 root 4u IPv4 5700 TCP *:ssh (LISTEN)
sshd 3217 root 3r IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3220 user1 3u IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3327 root 3r IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
sshd 3330 user2 3u IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
फिर आपको आक्रामक कनेक्शन को मारने में सक्षम होना चाहिए (जैसे, उपयोगकर्ता 2 को डिस्कनेक्ट करने के लिए):
# kill -9 3330
lsof -i tcp:22
और आपको grep की आवश्यकता नहीं होगी।
ssh
हैं और -p
विकल्प निर्दिष्ट नहीं करते हैं ..
Ssh कनेक्शन देखने के लिए आप a netstat -atn | grep ':22'
। यह पोर्ट 22 पर सभी कनेक्शन दिखाता है।
कनेक्शन को छोड़ने के लिए, आप sshd (SSH Daemon) के PID को खोजने का प्रयास कर सकते हैं ps-ax
।
संपादित करें: मुझे लगता है कि आप उनके bash
सत्र (या समतुल्य शेल) के पीआईडी पा सकते हैं । हत्या जो उन्हें ठीक छोड़ देना चाहिए।
एक अन्य संसाधन: इस धागे में विषय पर कुछ सुझाव हैं।
इसे इस्तेमाल करे:
$ ps aux | grep sshd
यदि आप रूट विशेषाधिकार हैं, या आप प्रश्न में उपयोगकर्ता हैं, तो आप उन्हें डिस्कनेक्ट करने के लिए kill PID
(जहां PID
दूसरे कॉलम में प्रक्रिया आईडी है) कर सकते हैं।