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.