Como cerrar sesiones de SSH

Si se tiene un servidor ssh al que seguramente se conectan clientes desde otros equipos Linux o Windows con clientes de ssh como putty, pues sucederá que algunas veces se requiere terminar la conexión desde el lado del servidor, sobre todo ¡¡si es una conexión sospechosa!!. Te voy a presentar un par de formas de lograrlo al matar los procesos que generan este tipo de conexiones.

Con ps y kill

La manera de terminar la conexión ssh desde el servidor es matando el número de proceso (PID) relacionado al socket de red de la conexión establecida. Si usamos netstat con las opciones correctas podremos observar esta conexión:

#> netstat -pnat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:902                 0.0.0.0:*                   LISTEN      4869/xinetd
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      5213/smbd
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      5459/perl
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      5177/X
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      5222/httpd
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      5222/httpd
tcp        0      0 :::22                       :::*                        LISTEN      5160/sshd
tcp        0      0 ::ffff:192.168.1.72:22      ::ffff:192.168.1.100:55855  ESTABLISHED 6950/sshd: sergio

En la última línea claramente se observa que el equipo remoto (cliente) 192.168.1.100 esta conectado al puerto 22 del equipo 192.168.1.72 que en este caso sería el servidor ssh, también en la última columna, tenemos el PID 6950 y al usuario sergio. Datos que nos indican el proceso del socket que se estableció en la conexión ssh y el usuario que se logueo desde el equipo remoto.

Si el usuario remoto que se hubiera conectado fuera root, entonces ya bastaría con matar el PID mostrado y terminariamos la conexión, pero en este caso (que debe ser lo correcto por seguridad) un usuario normal (sergio) fue el que se conectó y en este caso se generan dos PID’s para la conexión, veámoslo con un ps:

#> ps -ef | grep sergon
root      6950  5160  0 20:06 ?        00:00:00 sshd: sergon [priv]
sergon    6953  6950  0 20:06 ?        00:00:00 sshd: sergon@pts/3

Un usuario normal genera dos procesos, habrá que matar a los dos o con que termines el proceso asignado al usuario que en este caso sería 6953:

#> kill -9 6953

(del lado del cliente, verá el siguiente mensaje)
$> Connection to 192.168.1.72 closed by remote host.
Connection to 192.168.1.72 closed.

El mensaje dice que la conexión fue cerrada por el ‘remote host’ host remoto, confirmando que fue desde el lado del servidor que se interrumpió o “mató” el enlace.

Con who y pkill

En el listado de ps anterior, además de ver su número de proceso también obervamos a que terminal esta ligado el proceso, en la última columna está el dato y es: ‘sergio@pts/3’, lo mismo se obtiene más simplemente con el comando who:

#> who
sergio   :0           2007-11-05 19:28
sergio   pts/3        2007-11-05 20:23 (192.168.1.100)

Sabiendo entonces que hay un usuario en la pseudo terminal 3, es posible usar pkill que permite enviar señales (signals) a los procesos basado no en su PID sino en sus atributos o características, en este caso el número de la terminal:

#> pkill -9 -t pts/3

(del lado del cliente, verá el siguiente mensaje)
$ Connection to 192.168.1.72 closed.

Se envió la señal -9 que indica matar (KILL) el proceso, la opción -t indica que se basará en un atributo de nombre de terminal y se indica después el nombre de la terminal en si pts/3.

Si administras un servidor ssh, ten a la mano estos útiles comandos que te permitirán terminar conexiones cuando tu lo desees, sin necesidad de terminar todo el servicio de ssh.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s