Mi empresa tiene el requisito de tener una aplicación de servidor en ejecución, que todos los usuarios acceden a ella a través de una terminal de masilla. Quiero escribir un script de shell que solo 20 terminales de masilla deben estar abiertos. Si la terminal 21 está abierta, entonces quiero cerrar esa terminal de inmediato.
¿Cómo puedo conseguir esto?
Por favor, ayúdame.
command-line
bash
scripts
vijay12289
fuente
fuente
MaxSessions
campo/etc/sshd_config
o es un error de Ubuntu?Respuestas:
Edite su
/etc/sshd_config
en el lado del servidor y cambie la línea:a
Ver
man sshd_config
:fuente
MaxSessions 20
. Las sesiones mencionadas allí tratan sobre reenvíos de puertos (e incluso tener más de un shell abierto) usando la misma conexión, no sobre el número de inicios de sesión en el sistema.La solución de George funciona bien, sin embargo, solicitó un script bash ...
Así que considere esto una para otras situaciones en las que no hay ninguna opción al igual que
MaxSessions
desshd
, a continuación, se puede usar algo como esto:Lo
pkill -n
que matará a la instancia más nueva deprocessName
.La solución correcta para esta situación especial es la respuesta de George.
fuente
He decidido elaborar y probar la Ravexina 's idea . Funciona y es efectivo si desea restringir la cantidad de conexiones ssh establecidas.
Primero descubrí que cuando el demonio ssh se está ejecutando sin ninguna conexión, hay un
sshd
proceso. Para cada nueva conexiónsshd
se crean dos nuevos procesos. Entonces, si desea un límite de 20 conexiones, el umbral debe ser 41 (1 + 2x20) en lugar de 20.Luego he creado un archivo ejecutable, llamado , que se ve de la siguiente manera:
/usr/local/bin/limit-sshd
Finalmente agregué la siguiente directiva a
/etc/ssh/sshd_config
:$SHELL
ejecutará el shell del usuario predeterminado.sudo systemctl restart sshd.service
Así es como funciona ( haga clic en la imagen para ver una demostración animada ):
Además, me di cuenta de que no necesitamos matar nada, si modificamos el script de esta manera:
Y respectivamente
/etc/ssh/sshd_config
de esta manera:fuente
La pregunta no está clara. Permítanme decir primero cómo lo entiendo y de qué manera, en mi opinión, debería preguntarse:
Si esa interpretación es correcta, probablemente una forma correcta de cumplir con los requisitos es crear un grupo de usuarios , luego agregar todas las cuentas de usuario a ese grupo y limitar el número de maxlogins a través de
/etc/security/limits.conf
.Cree un grupo, llamado por ejemplo
the-app-maxlogins
, con id de grupo10 000
:Agregue los usuarios a ese grupo
sudo adduser <user> <group>
:Añadir la siguiente línea a la
/etc/security/limits.conf
que limitar las maxlogins de todo el grupo :O agregue la siguiente línea para limitar el número máximo de inicios de sesión por usuario del grupo :
Edite
/etc/ssh/sshd_config
y agregue las siguientes líneas en la parte inferior (!) Del archivo para deshabilitar la multiplexación de sesión para ese grupo (probablemente esto no es obligatorio en ese caso):Esta solución limitará el número de inicios de sesión de los usuarios afectados sin importar a través de ssh o tty. Si desea aplicarlo para un determinado usuario, no para un grupo, simplemente agregue una línea como sigue
limits.conf
o colóquela en un.conf
archivo separado dentro del directorio/etc/security/limits.d/
:MaxSessions
En esta respuesta se proporciona una explicación simple del significado real de la directiva . La fuente principal de la respuesta actual es otra respuesta bajo la misma pregunta de L&U.La otra respuesta mía, podría proporcionar una solución de alguna manera, pero es una solución más divertida que verdadera.
fuente