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?
linux
command-line-interface
ssh
Cerin
fuente
fuente
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.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ónwho
también imprimirá el PID asociado que luego puede pasarkill
para finalizar una conexión.fuente
-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 unalsof -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?
Entonces debería poder cerrar la conexión ofensiva (por ejemplo, desconectar user2):
fuente
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.
fuente
Prueba esto:
$ ps aux | grep sshd
Para desconectarlos, podría
kill PID
(dóndePID
está el Id. Del proceso en la segunda columna), si tiene privilegios de root o es el usuario en cuestión.fuente