چگونه اتصالات فعال SSH را در لینوکس پیدا کنیم
SSH (Secure Shell) یک پروتکل امن برای اتصال به سرورها و سیستمهای دیگر به صورت ریموت است. گاهی اوقات برای مدیران سیستم لازم است که بررسی کنند چه کسانی و با چه دستگاههایی از طریق SSH به سرور متصل هستند. این موضوع میتواند به دلایل امنیتی، مدیریتی و حتی رفع مشکلات (Troubleshooting) اهمیت داشته باشد. در این مقاله، روشهای مختلفی برای شناسایی و بررسی اتصالات SSH فعال در لینوکس را بررسی خواهیم کرد.
پیشنیازها
برای بررسی اتصالات SSH در سرور لینوکسی، شما به دسترسی مدیریتی (sudo) نیاز دارید. این دسترسیها به شما امکان میدهند تا اطلاعات مربوط به همهی اتصالات به سیستم را ببینید.
روشهای شناسایی اتصالات فعال SSH
۱. استفاده از دستور `who`
یکی از سادهترین راهها برای دیدن کاربران متصل به سیستم استفاده از دستور `who` است. این دستور به شما لیستی از کاربرانی که در حال حاضر به سیستم متصل هستند را نشان میدهد.
who
خروجی این دستور شامل نام کاربر، ترمینال استفاده شده، زمان ورود و آدرس IP/نام میزبان خواهد بود. اگر کاربری از طریق SSH به سیستم متصل باشد، شما آدرس IP آنها را میتوانید ببینید.
مثال خروجی:
user1 pts/0 2024-10-18 14:21 (192.168.1.101)
user2 pts/1 2024-10-18 14:45 (203.0.113.12)
۲. استفاده از دستور `w`
دستور `w` اطلاعات بیشتری نسبت به `who` در اختیار شما قرار میدهد. این دستور نه تنها کاربران متصل را نشان میدهد، بلکه اطلاعاتی درباره فرآیندهایی که هر کاربر اجرا کرده است نیز میدهد.
w
مثال خروجی:
۱۴:۵۰:۲۳ up 1 day, 5:12, 3 users, load average: 0.12, 0.09, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 pts/0 192.168.1.101 14:21 2:00 0.01s 0.01s sshd: user1@pts/0
user2 pts/1 203.0.113.12 14:45 1:30 0.02s 0.02s bash
۳. استفاده از دستور `last`
دستور `last` میتواند به شما نشان دهد که چه کاربرانی در گذشته از طریق SSH به سیستم متصل شدهاند. این دستور تاریخچهای از اتصالات اخیر را نمایش میدهد.
last
مثال خروجی:
user1 pts/0 192.168.1.101 Fri Oct 18 14:21 - 14:30 (00:09)
user2 pts/1 203.0.113.12 Fri Oct 18 14:45 - 15:00 (00:15)
۴. استفاده از دستور `netstat`
برای یافتن اطلاعات دقیقتر درباره اتصالات شبکهای، از جمله اتصالات SSH، میتوانید از دستور `netstat` استفاده کنید. این ابزار به شما امکان میدهد که لیستی از پورتها و پروتکلهای فعال بر روی سیستم را مشاهده کنید.
sudo netstat -tnp | grep ':22'
– `-t`: فقط اتصالات TCP را نشان میدهد.
– `-n`: آدرسها را به صورت عددی (بدون ترجمه به نامهای DNS) نمایش میدهد.
– `-p`: برنامههایی که از پورتها استفاده میکنند را نمایش میدهد.
مثال خروجی:
tcp 0 0 192.168.1.100:22 192.168.1.101:55244 ESTABLISHED 2201/sshd: user1
tcp 0 0 192.168.1.100:22 203.0.113.12:35488 ESTABLISHED 2350/sshd: user2
این دستور اتصالات SSH فعلی را که به پورت ۲۲ (پورت پیشفرض SSH) وصل شدهاند نشان میدهد. اطلاعات شامل آدرس IP، وضعیت اتصال و PID (شناسه فرآیند) برنامه sshd است.
۵. استفاده از دستور `ss`
`ss` ابزاری مشابه `netstat` است که در برخی نسخههای جدیدتر لینوکس موجود است و اطلاعات دقیقتری در مورد اتصالات شبکه ارائه میدهد. این دستور سریعتر از `netstat` است و میتواند برای یافتن اتصالات SSH استفاده شود.
sudo ss -tnp | grep ':22'
مثال خروجی:
ESTAB 0 0 192.168.1.100:22 192.168.1.101:55244 users:(("sshd",pid=2201,fd=3))
ESTAB 0 0 192.168.1.100:22 203.0.113.12:35488 users:(("sshd",pid=2350,fd=3))
۶. استفاده از دستور `ps` و `grep`
اگر نیاز دارید تا لیستی از فرآیندهای SSH فعال را ببینید، میتوانید از دستور `ps` و `grep` استفاده کنید:
ps -aux | grep sshd
مثال خروجی:
root 2201 0.0 0.1 11472 3176 ? Ss 14:21 0:00 /usr/sbin/sshd -D
user1 2304 0.0 0.2 13456 4096 pts/0 Ss 14:22 0:00 sshd: user1@pts/0
user2 2350 0.0 0.2 13568 4200 pts/1 Ss 14:45 0:00 sshd: user2@pts/1
این دستور فرآیندهای sshd را که نشاندهنده اتصالات فعال است، نمایش میدهد.
جمعبندی
شناسایی اتصالات SSH فعال در سیستم لینوکسی یکی از وظایف مهم برای مدیریت سرور و شبکه است. با استفاده از ابزارهای مختلفی مانند `who`, `w`, `last`, `netstat`, `ss` و `ps`، شما میتوانید به راحتی اتصالات SSH را بررسی کنید، مشکلات احتمالی را رفع کنید و امنیت سیستم را افزایش دهید. این ابزارها به شما کمک میکنند تا در لحظه به کاربران متصل نظارت داشته باشید و در صورت نیاز، اقدامات لازم را برای مدیریت و کنترل اتصالات انجام دهید.