SSH कनेक्शन का प्रबंधन


9

लिनक्स सर्वर पर, मुझे सभी वर्तमान एसएसएच कनेक्शनों की सूची कैसे मिलेगी, या एक विशिष्ट एसएसएच कनेक्शन को डिस्कनेक्ट करें?


क्या आप इनकमिंग या आउटगोइंग एसएसएच कनेक्शन में रुचि रखते हैं? अथवा दोनों?
शॉन चिन

2
यह प्रश्न सुपरसुअर के

मुझे केवल आने वाले कनेक्शनों में दिलचस्पी है।
सेरिन

जवाबों:


13

यदि आप इसे अंतःक्रियात्मक रूप से करने की योजना बना रहे हैं, तो सबसे सरल यह 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एक कनेक्शन समाप्त करने के लिए पास कर सकते हैं ।


1
-uआपको पीआईडी ​​देगा।
ग्रेविफेस

अगर
किसी

किसी कारण से, यह काम नहीं किया। एक दूरस्थ मशीन से, मैंने ssh का उपयोग करके अपनी मशीन में लॉग इन किया, और मेरी मशीन में, मैंने ए को निष्पादित किया who -u। पिड को मारने से मेरे रिमोट मशीन पर कनेक्शन समाप्त नहीं हुआ। हालाँकि, इसके बाद मैंने lsof -i | grep ":ssh" @kce द्वारा उत्तर में एक सुझाव दिया, मुझे एक अलग ही सलाह मिली; उस प्रक्रिया को मारने से कनेक्शन समाप्त हो गया। हो सकता है कि कई प्रक्रियाएं हैं जो एक ssh कनेक्शन के कारण शुरू की गई हैं और जो प्रदर्शित नहीं करता है उसे मारने से कनेक्शन समाप्त नहीं होता है; यह मेरा स्पष्टीकरण है।
नियो एम हैकर

8

कैसे के बारे में 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

3
उपयोग करें lsof -i tcp:22और आपको grep की आवश्यकता नहीं होगी।
शॉन चिन

केवल तभी जब आप विकल्प चलाते sshहैं और -pविकल्प निर्दिष्ट नहीं करते हैं ..
Jindra Helcl

1

Ssh कनेक्शन देखने के लिए आप a netstat -atn | grep ':22'। यह पोर्ट 22 पर सभी कनेक्शन दिखाता है।

कनेक्शन को छोड़ने के लिए, आप sshd (SSH Daemon) के PID को खोजने का प्रयास कर सकते हैं ps-ax

संपादित करें: मुझे लगता है कि आप उनके bashसत्र (या समतुल्य शेल) के पीआईडी ​​पा सकते हैं । हत्या जो उन्हें ठीक छोड़ देना चाहिए।

एक अन्य संसाधन: इस धागे में विषय पर कुछ सुझाव हैं।


मेरी वर्तमान मशीन पर मेरा कोई सक्रिय कनेक्शन नहीं है, लेकिन नेटस्टैट अभी भी एक tcp और tcp6 कनेक्शन को सूचीबद्ध करता है। मैं sshd के PID के साथ क्या करूंगा? क्या आप अनुमान लगा रहे हैं कि मुझे एकल कनेक्शन छोड़ने के लिए पूरे SSH सर्वर को मारना चाहिए?
सेरिन

@Cerin उन दो कनेक्शनों से पता चलता है कि यह उन बंदरगाहों (केवल) पर सुन रहा है

आपने निर्दिष्ट नहीं किया है, लेकिन मुझे लगता है कि हालांकि यह गलत है। क्षमा करें: /
कृपया अपने मॉड्स के साथ अच्छा व्यवहार करें।

0

इसे इस्तेमाल करे:

$ ps aux | grep sshd

यदि आप रूट विशेषाधिकार हैं, या आप प्रश्न में उपयोगकर्ता हैं, तो आप उन्हें डिस्कनेक्ट करने के लिए kill PID(जहां PIDदूसरे कॉलम में प्रक्रिया आईडी है) कर सकते हैं।


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