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

MaxSessionscampo/etc/sshd_configo es un error de Ubuntu?Respuestas:
Edite su
/etc/sshd_configen 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
MaxSessionsdesshd, a continuación, se puede usar algo como esto:Lo
pkill -nque 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
sshdproceso. Para cada nueva conexiónsshdse 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-sshdFinalmente agregué la siguiente directiva a
/etc/ssh/sshd_config:$SHELLejecutará el shell del usuario predeterminado.sudo systemctl restart sshd.serviceAsí 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_configde 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.confque 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_configy 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.confo colóquela en un.confarchivo separado dentro del directorio/etc/security/limits.d/:MaxSessionsEn 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