Wie würde ich auf einem Linux-Server eine Liste aller aktuellen SSH-Verbindungen finden oder eine bestimmte SSH-Verbindung trennen?
Wie würde ich auf einem Linux-Server eine Liste aller aktuellen SSH-Verbindungen finden oder eine bestimmte SSH-Verbindung trennen?
Antworten:
Wenn Sie dies interaktiv planen, ist es am einfachsten, einfach aufzurufen who
und zu prüfen, ob Benutzer von einem Remote-Host vorhanden sind.
[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)
Dies ist natürlich nicht kinderleicht, aber bei Bedarf extrem einfach zu tippen und mit dem menschlichen Auge leicht zu verarbeiten.
Wie @gravyface hervorhob, druckt bei Angabe einer -u
Option who
auch die zugehörige PID aus, an die Sie übergeben können, kill
um eine Verbindung zu beenden.
-u
gibt Ihnen die PID.
who -u
. Durch das Beenden der PID wurde die Verbindung auf meinem Remotecomputer nicht beendet. lsof -i | grep ":ssh"
Nachdem ich jedoch in der Antwort von @kce einen Vorschlag gemacht hatte, bekam ich eine andere PID. Durch das Beenden dieses Prozesses wurde die Verbindung beendet. Möglicherweise gibt es mehrere Prozesse, die aufgrund einer SSH-Verbindung gestartet werden und den Prozess beenden, der angezeigt wird, wenn die Verbindung nicht beendet wird. Das ist meine Erklärung.
Wie wäre es mit 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)
Sie sollten dann in der Lage sein, die fehlerhafte Verbindung zu beenden (z. B. Benutzer 2 zu trennen):
# kill -9 3330
lsof -i tcp:22
Sie und Sie werden den grep nicht brauchen.
ssh
die -p
Option ausführen und nicht angeben .
Um die SSH-Verbindungen anzuzeigen, können Sie a netstat -atn | grep ':22'
. Es werden alle Verbindungen an Port 22 angezeigt.
Um die Verbindung zu trennen, können Sie versuchen, die PID des sshd (SSH Daemon) mit zu ermitteln ps-ax
.
Bearbeiten: Ich denke, Sie können die PID ihrer bash
Sitzung (oder eine gleichwertige Shell) finden. Das zu töten sollte sie in Ordnung bringen.
Eine weitere Ressource: Dieser Thread enthält einige Tipps zu diesem Thema.
Versuche dies:
$ ps aux | grep sshd
Sie können die Verbindung trennen kill PID
(wo PID
befindet sich die Prozess-ID in der zweiten Spalte), wenn Sie über Root-Berechtigungen verfügen oder der betreffende Benutzer sind.