SSH Bağlantılarını Yönetme


9

Linux sunucusunda, mevcut tüm SSH bağlantılarının bir listesini nasıl bulabilirim veya belirli bir SSH bağlantısının bağlantısını nasıl kesebilirim?


Gelen veya giden SSH bağlantılarıyla ilgileniyor musunuz? ya da her ikisi de?
Shawn Chin


Sadece gelen bağlantılarla ilgileniyorum.
Cerin

Yanıtlar:


13

Bunu etkileşimli olarak yapmayı planlıyorsanız, en basit olanı whouzaktaki bir ana bilgisayardan herhangi bir kullanıcı olup olmadığını basitçe çağırmak ve görmek olacaktır.

[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)

Bu elbette kusursuz değildir, ancak talep üzerine yazmak ve insan gözüyle kolayca işlem yapmak son derece basittir.

@Gravyface'in işaret ettiği gibi, bir -useçenek whoeklerseniz, killbağlantıyı sonlandırmak için iletebileceğiniz ilişkili PID'yi de yazdıracaktır .


1
-usize PID verecektir.
gravyface

bir kullanıcıda birden fazla bağlantı varsa bu IP'leri göstermez
Biri

Nedense, bu işe yaramadı. Uzak bir makineden ssh kullanarak makineme giriş yaptım ve makinemde bir who -u. Pid'i öldürmek uzak makinemdeki bağlantıyı kesmedi. Ancak, lsof -i | grep ":ssh" @kce'nin cevabında bir öneride bulundum, farklı bir pid aldım; bu işlemi öldürmek bağlantıyı sonlandırdı. Belki bir ssh bağlantısı ve başlatılan bağlantıyı sonlandırmayan tarafından öldürülmesi nedeniyle başlatılan birden çok işlem vardır; bu benim açıklamam.
Neo M Hacker

8

Lsof kullanmaya ne dersiniz?

# 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)

Bu durumda, rahatsız edici bağlantıyı öldürebilmeniz gerekir (örn., User2 bağlantısını kesmek için):

# kill -9 3330

3
Kullanın lsof -i tcp:22ve grep'e ihtiyacınız olmayacak.
Shawn Chin

Sadece çalıştırmak sshve -pseçeneği belirtmezseniz ..
Jindra Helcl

1

Bir yapabileceğiniz ssh bağlantılarını görüntülemek için netstat -atn | grep ':22'. Bağlantı noktası 22'deki tüm bağlantıları gösterir.

Bağlantıyı kesmek için, sshd'nin (SSH Daemon) PID'sini ile bulmayı deneyebilirsiniz ps-ax.

Düzenleme: Ben onların bashoturumu (veya eşdeğer kabuk) PID bulabilirsiniz düşünüyorum . Öldürmek onları bırakmalı.

Başka bir kaynak: Bu iş parçacığının konuyla ilgili bazı ipuçları var.


Geçerli makinemde etkin bir bağlantım yok, ancak netstat hala bir tcp ve tcp6 bağlantısını listeliyor. SSD'nin PID'si ile ne yapardım? Tek bir bağlantıyı kesmek için tüm SSH sunucusunu öldürmem gerektiğini mi ima ediyorsunuz?
Cerin

@Cerin Bu iki bağlantı o bağlantı noktalarını dinlediğini gösteriyor (sadece)

Siz belirtmediniz, ama buna rağmen sahip olmalıyım. Üzgünüz: /
Lütfen modlarınızı iyi değerlendirin.

0

Bunu dene:

$ ps aux | grep sshd

Bunların bağlantısını kesmek için kill PID( PIDikinci sütundaki işlem kimliği nerede olabilir ), kök ayrıcalıklarınız varsa veya söz konusu kullanıcı iseniz.


Bu sadece sshd'nin çalıştığını ve bağlantının kurulduğu kullanıcıyı gösterir (bağlantı sayısı değil, hangi IP'den kaynaklanmaktadır)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.