Sur un serveur Linux, comment trouver une liste de toutes les connexions SSH actuelles ou déconnecter une connexion SSH spécifique?
Sur un serveur Linux, comment trouver une liste de toutes les connexions SSH actuelles ou déconnecter une connexion SSH spécifique?
Réponses:
Si vous prévoyez de le faire de manière interactive, le plus simple serait d'appeler simplement who
et de voir s'il y a des utilisateurs d'un hôte distant.
[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)
Ce n'est bien sûr pas infaillible, mais il est extrêmement simple à taper à la demande et à traiter facilement avec l'œil humain.
Comme l'a souligné @gravyface, si vous incluez une -u
option who
, vous imprimerez également le PID associé que vous pourrez ensuite transmettre pour kill
mettre fin à une connexion.
-u
vous donnera le PID.
who -u
. Tuer le pid n'a pas mis fin à la connexion sur ma machine distante. Cependant, après avoir fait une lsof -i | grep ":ssh"
suggestion dans la réponse de @kce, j'ai obtenu un pid différent; tuer ce processus a mis fin à la connexion. Peut-être que plusieurs processus sont démarrés à cause d'une connexion ssh et tuent celui affiché par qui ne met pas fin à la connexion; c'est mon explication.
Que diriez-vous d'utiliser 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)
Vous devriez alors être en mesure de supprimer la connexion incriminée (par exemple, pour déconnecter l'utilisateur2):
# kill -9 3330
lsof -i tcp:22
et vous n'aurez pas besoin du grep.
ssh
et ne spécifiez pas l' -p
option ..
Pour afficher les connexions ssh, vous pouvez faire a netstat -atn | grep ':22'
. Il affiche toutes les connexions sur le port 22.
Pour interrompre la connexion, vous pouvez essayer de trouver le PID du sshd (SSH Daemon) avec ps-ax
.
Edit: je pense que vous pouvez trouver le PID de leur bash
session (ou shell équivalent). Tuer qui devrait les faire tomber.
Autre ressource: ce fil propose quelques astuces sur le sujet.
Essaye ça:
$ ps aux | grep sshd
Pour les déconnecter, vous pouvez kill PID
(où se PID
trouve l'ID de processus dans la deuxième colonne), si vous avez des privilèges root, ou si vous êtes l'utilisateur en question.