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 whoet 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 -uoption who, vous imprimerez également le PID associé que vous pourrez ensuite transmettre pour killmettre fin à une connexion.
-uvous 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:22et vous n'aurez pas besoin du grep.
sshet ne spécifiez pas l' -poption ..
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 bashsession (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 PIDtrouve l'ID de processus dans la deuxième colonne), si vous avez des privilèges root, ou si vous êtes l'utilisateur en question.