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
whoy 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
-uopciónwhotambién imprimirá el PID asociado que luego puede pasarkillpara finalizar una conexión.fuente
-ute 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:22y no necesitará el grep.sshy no especifica la-popció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
bashsesió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 sshdPara desconectarlos, podría
kill PID(dóndePIDestá el Id. Del proceso en la segunda columna), si tiene privilegios de root o es el usuario en cuestión.fuente