En un servidor Linux, ¿cómo podría encontrar una lista de todas las conexiones SSH actuales o desconectar una conexión SSH específica?
En un servidor Linux, ¿cómo podría encontrar una lista de todas las conexiones SSH actuales o desconectar una conexión SSH específica?
Respuestas:
Si planea hacer esto de manera interactiva, lo más simple sería simplemente invocar who
y ver si hay usuarios de un host remoto.
[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)
Por supuesto, esto no es infalible, pero es extremadamente simple de escribir a pedido y procesar fácilmente con el ojo humano.
Como señaló @gravyface, si incluye una -u
opción who
también imprimirá el PID asociado que luego puede pasar kill
para finalizar una conexión.
-u
te dará el PID.
who -u
. Matar al pid no terminó la conexión en mi máquina remota. Sin embargo, después de que hice una lsof -i | grep ":ssh"
sugerencia en la respuesta de @kce, obtuve un pid diferente; matar ese proceso terminó la conexión. Tal vez hay múltiples procesos que se inician debido a una conexión ssh y matando al que se muestra por quién no termina la conexión; Esa es mi explicación.
¿Qué hay de usar 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)
Entonces debería poder cerrar la conexión ofensiva (por ejemplo, desconectar user2):
# kill -9 3330
lsof -i tcp:22
y no necesitará el grep.
ssh
y no especifica la -p
opción ..
Para ver las conexiones ssh puede hacer a netstat -atn | grep ':22'
. Muestra todas las conexiones en el puerto 22.
Para desconectar la conexión, puede intentar encontrar el PID del sshd (SSH Daemon) con ps-ax
.
Editar: creo que puedes encontrar el PID de su bash
sesión (o shell equivalente). Matar eso debería dejarlos bien.
Otro recurso: este hilo tiene algunos consejos sobre el tema.
Prueba esto:
$ ps aux | grep sshd
Para desconectarlos, podría kill PID
(dónde PID
está el Id. Del proceso en la segunda columna), si tiene privilegios de root o es el usuario en cuestión.